C++继承方法调用基类的方法而不是重载方法

标签 c++ inheritance overloading

给定代码:

class A{
public:
    void callFirst()
    {
        callSecond();
    }
    void callSecond()
    {
        cout << "This an object of class A." << endl;
    }
};

class B : public A{
public:
    void callSecond()
    {
        cout << "This is an object of class B." << endl;
    }
};

int main()
{
    B b;
    b.callFirst();

    return 0;
}

我得到输出:

This an object of class A.

我该怎么做才能在调用派生类的继承方法时,除了重载第一个方法外,它不会依次调用基类的方法而不是重载的方法?

最佳答案

您必须将 callSecond() 成员函数标记为 virtual,否则您将得到编译时绑定(bind)(相对于运行时绑定(bind))。

关于C++继承方法调用基类的方法而不是重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29700415/

相关文章:

c++ - 根据模板参数的模板函数名称

Swift 方法重载推理不起作用

c++ - 如何在模板类中使用友元运算符?

C++ 二进制搜索算法不工作

c++ - "segmentation fault"程序的 Valgrind 结果

C++:在基类中不是虚拟方法时,在派生类中声明虚拟方法是否合法?

c# - 在 VS 2010 的类设计器中可视化泛型继承的类型参数

c# - 为什么 C# 类可以隐式和显式地从一个接口(interface)继承?

C# - 重载不同类型的方法是否比在单个方法中使用类型检查更高效?

c++ - 一个类可以有多少个构造函数?