重写纯虚函数时使用“override”有什么意义吗?

2024-04-22

例如:

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(使用前将#替换为@)

重写纯虚函数时使用“override”有什么意义吗? 的相关文章

随机推荐