我是 C++ 的初学者。我遇到了 override
我正在处理的头文件中使用的关键字。请问 override
的真正用途是什么,也许举个例子就很容易理解了。
原文由 SKPS 发布,翻译遵循 CC BY-SA 4.0 许可协议
我是 C++ 的初学者。我遇到了 override
我正在处理的头文件中使用的关键字。请问 override
的真正用途是什么,也许举个例子就很容易理解了。
原文由 SKPS 发布,翻译遵循 CC BY-SA 4.0 许可协议
作为所有答案的附录,仅供参考: override
不是关键字,而是一种 特殊 的标识符!它仅在声明/定义虚函数的上下文中有意义,在其他上下文中它只是一个普通的 标识符。有关详细信息,请阅读 标准 的 2.11.2。
#include <iostream>
struct base
{
virtual void foo() = 0;
};
struct derived : base
{
virtual void foo() override
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
};
int main()
{
base* override = new derived();
override->foo();
return 0;
}
输出:
zaufi@gentop /work/tests $ g++ -std=c++11 -o override-test override-test.cc
zaufi@gentop /work/tests $ ./override-test
virtual void derived::foo()
原文由 zaufi 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
override
关键字有两个用途:解释后者:
在
derived2
编译器会发出“更改类型”的错误。如果没有override
,编译器最多会发出警告“您正在隐藏同名的虚拟方法”。