例如:
class Base {
virtual void my_function() = 0;
};
class Derived : Base {
void my_function() override;
};
从我读到的来看,override
关键字用于确保我们在重写的函数中具有正确的签名,这似乎是它的唯一用途。
然而,在纯虚函数的情况下,如果我们在派生类(或基类,取决于人们如何看待事物)中使用了不正确的签名,编译器将抛出错误。那么,添加有什么意义吗?override
在......的最后Derived::my_function()
宣言?
但是,在纯虚函数的情况下,如果我们在派生类中使用了不正确的签名,编译器将抛出错误
不,这编译:
class Base {
virtual void my_function() = 0;
};
class Derived : Base {
void my_function(int);
// ^^^ mistake!
};
虽然这不会:
class Base {
virtual void my_function() = 0;
};
class Derived : Base {
void my_function(int) override;
};
error: void Derived::my_function(int)
marked override
,但不覆盖
您所说的错误仅在实例化时发生Derived
- override
允许您更早地发现错误并做出定义Derived
更清晰/更具可读性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)