关于继承/方法重写C++的问题

Ben*_*ves 2 c++

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

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

class Class2 : public Class1
{
public:
    void print()
    {
        cout << "test2" << endl;
    }
};
Run Code Online (Sandbox Code Playgroud)

为什么print()不会在Class2中被覆盖,是否有任何方法可以像这样覆盖一个函数?(没有虚函数).谢谢

    Class2 t;
    t.printl();
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 10

不.这是虚拟功能的全部原因.

如果没有虚拟方法,当printl()调用print()时,它会调用Class1.print(),打印"test".如果您将方法标记为虚拟,那么它将按您的预期处理它.