C++ 面试题
目录

C++11 中 override 和 final 关键字的作用是什么?

· 约 2 分钟读完 · 第 116 / 181 章

推荐答案

在C++11中,override 和 final 是两个用于类继承和多态的关键字。

  • override:用于显式地标记派生类中的虚函数,表示该函数是对基类中虚函数的重写。如果派生类中的函数签名与基类中的虚函数不匹配,编译器会报错,从而帮助开发者避免错误。

  • final:用于标记类或虚函数,表示该类不能被继承,或者该虚函数不能被派生类重写。使用 final 可以防止进一步的继承或重写,增强代码的安全性和可维护性。

本题详细解读

override 关键字

在C++11之前,派生类中重写基类的虚函数时,如果函数签名不匹配(例如参数类型或数量不同),编译器不会报错,而是将其视为一个新的函数。这可能导致难以发现的错误。

C++11引入了 override 关键字,允许开发者显式地标记派生类中的虚函数,表示该函数是对基类中虚函数的重写。如果函数签名不匹配,编译器会报错,从而帮助开发者避免错误。

final 关键字

final 关键字可以用于类或虚函数,表示该类不能被继承,或者该虚函数不能被派生类重写。

  • 用于类时,final 表示该类不能被继承。
  • 用于虚函数时,final 表示该虚函数不能被派生类重写。

通过使用 final,开发者可以防止进一步的继承或重写,增强代码的安全性和可维护性。