下面有错误
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()
{
}
最佳答案
如果您的派生类从父类声明了一个虚方法,就像 C
对 void Foo()
所做的那样,那么它也必须实现它。如果你想继承B
的实现,那么不要在C
中声明void Foo()
。
class C: public B
{
public:
void Test();
};
关于c++ - 关于 C++ 中的继承,派生类是否可以在不显式定义基类的情况下从基类获得实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16677277/