C++ 面试题 目录

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

推荐答案

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

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

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

本题详细解读

override 关键字

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

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

-- -------------------- ---- -------
----- ---- -
-------
    ------- ---- ---------
--

----- ------- - ------ ---- -
-------
    ---- -------- --------- -- -----------
    ---- ----------- --------- -- ----------------
--

final 关键字

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

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

----- ------- - ------ ---- -
-------
    ---- ------ -- ------------ - ----- --------
--

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

纠错
反馈