在主函数中声明一个DerivedClass的对象,分别用DerivedClass的对象以及BaseClass和DerivedClass的指针来调用fn1(),fn2(),观察运行结果。
#include<iostream>using namespace std;class BaseClass
{
public:void fn1() const { cout<<"调用基类函数fn1()"<<endl; }void fn2() const { cout<<"调用基类函数fn2()"<<endl; }
};class DerivedClass :virtual public BaseClass
{
public:void fn1() const { cout<<"调用派生类函数fn1()"<<endl; }void fn2() const { cout<<"调用派生类函数fn2()"<<endl; }
};int main()
{DerivedClass a;a.fn1();a.fn2();BaseClass *c = &a;//对象指针在使用前一定要先进行初始化,让它指向一个已经声明过的对象然后再使用//BaseClass *c; 错误,程序崩溃c->fn1();c->fn2();DerivedClass *b = &a;b->fn1();b->fn2();
}
注意:在运用指针调用fn1(),fn2()时,一定要先对指针进行初始化,让它指向一个已经声明过的对象,然后在使用,否则直接使用会使得程序崩溃。通过对象指针可以访问到对象的公有成员。