一个关于继承和函数覆盖的问题。
// base.h
class Base {
protected:
void a();
public:
void b();
}
// base.cc
void Base::a() {
// Empty.
return;
}
void Base::b() {
this->a();
}
// derived.h
class Derived : public Base {
protected:
void a();
}
// derived.cc
void Derived::a() {std::cout << "OK" << std::endl;}
所以在我的程序中它是 Derived* p = new Derived()
,但是 p->b()
不打印 OK
?抱歉新手问题。
最佳答案
您必须声明一个函数 virtual
才能使继承工作。
// base.h
class Base {
protected:
void a();
public:
virtual void b();
}
关于c++ - 功能覆盖不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31604137/