发现一个完全没用的 C++ 语言“特性”

可以使用 = delete 来定义一个虚函数:


struct B { virtual void m() = delete; };


但是在子类中,你也必须使用 = delete 来定义对 m 的重写:


struct D : B {
  void m() override;  // ERROR
  void m() override = delete;  // OK
};


另外,在子类中你也不能使用 = delete 来重写一个在父类中没有被定义为 = delete 的虚函数:


struct B { virtual void m(); };
struct D : B {
  void m() override = delete;  // ERROR
};
 
 
Back to Top