c++ - 功能覆盖不起作用

标签 c++ inheritance overriding

一个关于继承和函数覆盖的问题。

// 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/

相关文章:

c++ - 在 Linux 系统上出于学术目的模拟 *server-like* 端口事件(仅限软件端口)

c++ - IDXGISwapChain::ResizeBuffers() 0x887a0001 DXGI_ERROR_INVALID_CALL

inheritance - 了解 Fortran 扩展类型和覆盖

objective-c - 如何用更具体的类型覆盖父类(super class)的属性?

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - 如何有效地合并两个 BST?

c++ - 从派生类方法设置基对象

.net - DLL 中未调用 VB.NET 静态构造函数

c++ - 访问虚拟派生类的成员/方法

c# - 为什么要跳过覆盖访问器?