第五章实验

匿名 (未验证) 提交于 2019-12-03 00:34:01

一、实验目的和要求

1、掌握派生类的定义方法和派生类构造函数的定义方法。

2、掌握在不同继承方式的情况下,基类成员在派生类中的访问权限。

3、掌握在多继承方式的情况下,构造函数与析构函数的调用时机与顺序。

二、实验内容

1、调试下列程序,并在对程序进行修改后再调试,指出调试中的出错原因。

  1. //sy5_1.cpp
  2. #include<iostream>
  3. usingnamespace
  4. class
  5. public
  6. voidint
  7. intreturn
  8. public
  9. int
  10. classpublic
  11. public
  12. voidint
  13. intreturn
  14. void
  15. public
  16. int
  17. int
  18. cout<<"A::a="
  19. cout<<"B::b="
  20. cout<<"A::a="
  21. cout<<"B::b="
  22. return

按下列要求对程序进行修改,然后调试,对出现的错误分析其原因。

(1)将派生类B的继承方式改为private时,会出现哪些错误和不正常现象?为什么?


(2)将派生类B的继承方式改为protected时,会出现哪些错误和不正常现象?为什么?


(3)将派生类B的继承方式恢复为public后,再将A中数据成员int型变量a的访问权限改为private时,会出现哪些错误和不正常现象?为什么?


(4)派生类B的继承方式仍为public,将类A中数据成员int型变量a的访问权限改为protected时,会出现哪些错误和不正常现象?为什么?


2、重写教材中的Li4_10.cpp程序,给每个类增加一个析构函数,并使类之间的关系如附图1所示,再写出程序的输出结果。(sy5_2.cpp)

  1. #include<iostream>
  2. usingnamespace
  3. class
  4. public
  5. class
  6. public
  7. classpublicvirtualpublic
  8. public
  9. classpublicvirtualpublic
  10. public
  11. classpublicvirtualpublic
  12. public
  13. int
  14. return

运行结果:


3、利用继承性与派生类啦管理学生和教师档案。假设要管理下述几类人员的如下一些数据。




要求每个类只设立构造函数以及显示类对象数据的成员函数。编写主函数,说明有关类对象,并对其类成员函数进行简单实用。(sy5_3.cpp)


4、试写出所能想到的所有形状(包括二维的和三维的),生成一个形状层次类结构。生成的层次结构以Shape作为基类,并由此派生出TwoDimShape类和ThreeDimShape类。它们的派生类是不同形状类,定义层次结构中的每一个类,并用函数main()进行测试。(sy5_4.cpp)

  1. #include<iostream.h>
  2. constdouble
  3. class
  4. {public:doubleconst{return
  5. void
  6. classvirtualpublic
  7. classvirtualpublic
  8. //三角形类
  9. classpublic
  10. {public:Triangle(doubledoubledoubleconstreturn
  11. void
  12. private:double
  13. //正方形类
  14. classpublic
  15. {public:Square(double
  16. doubleconstreturn
  17. void
  18. private:double
  19. //正方体
  20. classpublic
  21. {public:Squarer(double
  22. doubleconstreturnvoidprivate:double
  23. //球
  24. classpublic
  25. {public:Ball(double
  26. doubleconstreturn
  27. voidprivate:double
  28. int
  29. double
  30. cout<<
  31. double
  32. //
  33. cout<<
  34. //
  35. cout<<
  36. //
  37. cout<<
  38. return

运行结果:


三、分析与讨论

1、通过对实验内容中第1题的调试,总结不同继承方式的情况下,基类成员在派生类中的访问权限。


2、解释实验内容中第2题的运行结果,总结多继承方式的情况下,构造函数与析构函数的调用时机与顺序。虚基类的构造函数与普通基类的构造函数在调用时有什么不同?

3、如果希望附图1中的Base1、Base2均有两个,如何修改程序?


四、实验小结


文章来源: 第五章实验
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!