c++ - 关于继承/方法覆盖 C++ 的问题

标签 c++

class Class1
{
public:
    void print()
    {
        cout << "test" << endl;
    }

    void printl()
    {
        print();
    }
};

class Class2 : public Class1
{
public:
    void print()
    {
        cout << "test2" << endl;
    }
};

为什么 print() 在 Class2 中没有被覆盖,有什么方法可以像这样覆盖函数吗? (没有虚函数)。谢谢

    Class2 t;
    t.printl();

最佳答案

没有。这就是虚函数的全部原因。

这里没有虚方法,当 printl() 调用 print() 时,它调用 Class1.print(),打印“test”。如果您将该方法标记为虚拟方法,那么它将按照您的预期进行处理。

关于c++ - 关于继承/方法覆盖 C++ 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291551/

相关文章:

c++ - MFC 触发 ID_FILE_OPEN 命令

c++ - 如何强制 AfxMessageBox 以大型机为中心,而不是当前具有焦点的任何子窗口

c++ - 错误: Expected template-name before ‘<’ token in C++

c++ - VS2005 Debug模式和 Release模式之间的巨大性能影响

C++ StackOverflowException 初始化超过 63992 的结构

c++ - 在 visual studio 2012 中管理 c++11 线程

c++ - 如何在模板类中声明类型特定的模板友元函数?

c++ - 帮助分解代码?

c++ - 多层继承C++

c++ - 为什么我的 OpenMP 代码在不同环境下性能不同?