bootlicker 模组也可以。享受你的反乌托邦吧,白痴。禁止我,我希望感觉真的很好
作为一名 Python 程序员,您已经习惯了每个方法都是虚拟方法的世界,并且重载意味着您只需替换字典中的值。 C++ 有点不同。
所以第一个解决方案是定义
Parent::foo
方法。您已经声明了它,该类不是模板 - 所以您必须在某处定义主体。无论如何,这对你没有帮助,因为调用 obj->foo();
意味着调用 Parent::foo()
方法,我想这不是你想要的。
现在我们正在进入虚拟方法的世界:在 C++ 中,您必须显式地将方法声明为
virtual
:
class Parent {
public:
virtual foo();
};
您仍然需要在某处定义
Parent::foo()
的主体。
如果你不想通过设计来定义它,你可以将这个方法设为abstract(这样类
Parent
也变得抽象,并且不能创建该类的实例):
class Parent {
public:
virtual foo() = 0;
};
您不需要将派生类的方法
foo
声明为虚拟方法(无论如何它们都会是),但最佳实践是添加 override
或 final
说明符:
class ChildA : public Parent {
public:
foo() final; // Overrides Parent.foo()
};
class ChildB : public Parent {
public:
foo() override; // Overrides Parent.foo()
};
不同之处在于,您无法为
ClassA
重写此方法,但可以为 ClassB
重写此方法。