class test1 { public: virtual void proc1(); void proc(); }; class test2:public test1 { public: virtual void proc1(); }; void test1::proc1() { cout<<"1"; } void test1::proc() { proc1(); } void test2::proc1() { cout<<"2"; }
定义了test1和test2两个类,其中test2为test1的子类。其中两个类中都有虚函数Proc1,子类test1还有个成员函数Proc,此成员函数会调用虚函数Proc1。
test2 A; A.proc();
实例化一个test2类对象,然后调用test1的成员函数proc。由于c++多态的作用实际proc函数调用的是test2的Proc1。因为其是通过虚拟指针查表得到的proc1函数的地址,所以是多态。