c++ - 关于 C++ 中的继承,派生类是否可以在不显式定义基类的情况下从基类获得实现

标签 c++ inheritance virtual

下面有错误

error LNK2001: unresolved external symbol "public: virtual void __thiscall C::Foo(void)" (?Foo@C@@UAEXXZ)

所以基本上 C::Test() 不能自动继承 B::Test() 的实现,我们每次都必须在 C++ 中显式地编写它?

class A
{

public:  
    virtual void Foo()=0;
    virtual void Test()=0;

};

class B: public A 
{
public: 
    virtual void Foo();
    virtual void Test()=0;

};

void B::Foo()
{

}



class C: public B
{
public:
    void Foo();
    void Test();
};



void C::Test()
{
}

最佳答案

如果您的派生类从父类声明了一个虚方法,就像 Cvoid Foo() 所做的那样,那么它也必须实现它。如果你想继承B的实现,那么不要在C中声明void Foo()

class C: public B
{
public:
    void Test();
};

关于c++ - 关于 C++ 中的继承,派生类是否可以在不显式定义基类的情况下从基类获得实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16677277/

相关文章:

android - 有没有办法挂载 Android .img 以访问 AVD(Android 虚拟设备)内容?

c++ - 捕获dll异常后访问冲突

c# - 如何在 Windows 10 C# 通用应用程序中使用 C++ 类?

C# 到 VB.Net 问题

指向对象的指针 vector 中的 C++ 差异

C++在派生类中将默认参数更改为构造函数

java - "Parent c = new Child()"和 "Child c = new Child()"有什么区别?

c++ - 实现第三方方法虚拟化

c++ - 获取窗口的背景颜色

C++ 将 uint8_t 转换为 unsigned long