gpt4 book ai didi

c++11 - 我应该总是使用 override 上下文关键字吗?

转载 作者:行者123 更新时间:2023-12-04 10:24:58 26 4
gpt4 key购买 nike

我知道override引入 contextual 关键字是为了编写更安全的代码(通过检查具有相同签名的 virtual 函数),但我对此感觉不太好,因为我编写 override 似乎是多余的。每次我想覆盖 virtual功能。

不使用 override 是不好的做法吗? 99% 情况下的上下文关键字?为什么/何时必须使用它( 当我们错误地隐藏虚拟函数时,编译器警告是不够的 )?

编辑:换句话说;使用 override 有什么好处? C++11 中的上下文关键字,而如果我们在 C++03 中错误地隐藏了一个虚函数,我们总是有一个编译器警告(不使用 override 上下文关键字)?

最佳答案

override关键字是 完全有用我建议使用它 一直 .

如果你拼错了你的虚函数,它会编译得很好,但在运行时程序会调用错误的函数 .它将调用基类函数而不是您的覆盖。

这可能是一个很难找到的错误:

#include <iostream>

class Base
{
public:
virtual ~Base() {}

virtual int func()
{
// do stuff for bases
return 3;
}
};

class Derived
: public Base
{
public:

virtual int finc() // WHOOPS MISSPELLED, override would prevent this
{
// do stuff for deriveds
return 8;
}
};

int main()
{
Base* base = new Derived;

std::cout << base->func() << std::endl;

delete base;
}

关于c++11 - 我应该总是使用 override 上下文关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com