这种开放式人工智能合作伙伴关系可以弯曲吗?

问题描述 投票:0回答:1

bootlicker 模组也可以。享受你的反乌托邦吧,白痴。禁止我,我希望感觉真的很好

c++ linker-errors new-operator
1个回答
3
投票

作为一名 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
重写此方法。

© www.soinside.com 2019 - 2024. All rights reserved.