1. 程式人生 > >[C/C++]C++中虛擬函式的原理和虛擬函式表

[C/C++]C++中虛擬函式的原理和虛擬函式表

#include
using namespace std;

class A{
   
public:
    A();
    virtual void fun1();
    void fun2();
};
A::A()
{
}
void A::fun1()
{
    cout<<"I am in class A fun1"<<endl;
}
void A::fun2()
{
    cout<<"I am in class A fun2"<<endl;
}
class B:public A
{
   
public:
    B();
    virtual void fun1();  //預設的從父類繼承來,就是虛擬函式
    void fun2();
};
void B::fun1()
{
    cout<<"I am in class B fun1"<<endl;
}
void B::fun2()
{
    cout<<"I am in class B fun2"<<endl;
}
B::B()
{
}
void main()
{
    A a;
    B b;
    A *ptr;
    ptr=&a;
    cout<<"ptr=&a; prt->fun1():        "<<endl;
    ptr->fun1();
    cout<<"ptr=&a; prt->fun2():        "<<endl;
    ptr->fun2();
    ptr=&b;           
    cout<<"ptr=&b; prt->fun1():        "<<endl;
    ptr->fun1();
    cout<<"ptr=&b; prt->fun2():        "<<endl;
    ptr->fun2();