C++中的虚函数

Avi*_*jee 3 c++ virtual-functions

在我的C++程序中:

#include<iostream.h>

class A
{
    public:
    virtual void func()
    {
         cout<<"In A"<<endl;
    }
};

class B:public A
{
    public:
    void func()
    {
        cout<<"In B"<<endl;
    }
};

class C:public B
{
    public:
    void func()
    { 
        cout<<"In C"<<endl;
    }
};  

int main()
{
    B *ptr=new C;
    ptr->func();
}
Run Code Online (Sandbox Code Playgroud)

声明应该致电B::func().但是,该函数C::func()被称为.请详细说明一下.一旦在'A类'中删除了虚拟关键字,就不会再发生这种情况了.

beg*_*ray 7

一旦声明虚函数将在所有派生类中是虚拟的(无论您是否明确指定它).因此func()在A,B和C类中是虚拟的.