ww.getn(); ww.geta(); ww.getx(); ww.getid();
cout<<\下面修改类GS对象的数据成员值:\ ww.p_set(\ ww.s_set(\ ww.g_set(\
cout<<\下面输出修改后类GS对象的数据成员值:\ ww.getn(); ww.geta(); ww.getx(); ww.getid(); }
结果如下:
执行类Person的构造函数 执行类Student的构造函数 执行类Graduate的构造函数 执行类GS的构造函数
下面输出初始化后类GS对象的数据成员值:
执行类Person的成员函数getn(),获取name=**GT**
- 21 -
执行类Person的成员函数geta(),获取age=3 执行类Student的成员函数getx(),获取xh=2008XXXX 执行类Graduate的成员函数getid(),获取id=08XXXXXXXX 下面修改类GS对象的数据成员值:
执行类Person的成员函数p_set(),修改name=xujun,修改age=20 执行类Student的成员函数s_set(),修改xh=20085X51 执行类Graduate的成员函数g_set(),修改id=0809XXXXXX 下面输出修改后类GS对象的数据成员值:
执行类Person的成员函数getn(),获取name=xujun 执行类Person的成员函数geta(),获取age=20 执行类Student的成员函数getx(),获取xh=20085X51 执行类Graduate的成员函数getid(),获取id=0809XXXXXX 执行类GS的析构函数 执行类Graduate的析构函数 执行类Student的析构函数 执行类Person的析构函数 Press any key to continue
- 22 -
程序设计的亮点: 这个貌似没亮点。
实验体会:
通过本次实验,我更加掌握了虚函数和虚基类的运用,我发现我在字符
数组这一块不熟悉,经过查阅资料才重新回顾了一下数组这块的知识。在做选作的时候,我的GS类中没有写pubulic导致程序一直出错,让我花了很多时间才发现了这个错误。以后做编程的实验,一定要认真仔细,按照逻辑一步一步的写,这样才能避免一些难以发现的错误。
- 23 -
思考题:
1.请例举或结合实验,说明虚函数的工作机制
答:当一个类的成员函数声明为虚函数后,就可以在该类的派生类中定义与其基类虚函数原型相同的函数。这时,当用基类指针指向这些派生类对象时,系统会自动派生类中的同名函数来代替基类的虚函数。例如实验中:count()函数在基类Emp中有,在其他派生类中也存在。定义count为虚函数后,定义的基类指针指向了派生类对象,系统会自动用派生类的count函数来代替基类的count虚函数。
2. 请举例或结合实验,说明虚基类的工作机制。
答:虚基类被一个派生类间接地多次继承,但派生类却只继承一份该基类的成员,这样就避免了派生类中访问这些成员时产生二义性。例如选作中:类Graduate和类Student都为Person的公有派生类,为了避免产生二义性,则定义派生时以虚基类的方式来派生。
- 24 -
- 25 -
- 26 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++实验6报告(5)在线全文阅读。
相关推荐: