在主函数中声明一个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()时,一定要先对指针进行初始化,让它指向一个已经声明过的对象,然后在使用,否则直接使用会使得程序崩溃。通过对象指针可以访问到对象的公有成员。