如有你有帮助,请购买下载,谢谢!
实验4 继承与派生
一、实验目的和要求
(1)掌握派生类的定义方法和派生类构造函数的定义方法。 (2)掌握不同继承方式的情况下,基类成员在派生类中的访问权限。
(3)掌握在多继承方式的情况下,构造函数与析构函数的调用时机与顺序。
二、实验内容和原理
(1)实验指导书P86 1~2任选一题。 (2)实验指导书P89 3~4任选一题。 三、实验环境
联想计算机,Windows XP操作系统,Visual C++ 6.0 四、算法描述及实验步骤 (1)输入源程序。
(2)检查程序有无错误(包括语法错误和逻辑错误),有则改之。
(3)编译和连接,仔细分析编译信息,如有错误应找出原因并改正之。
(4)运行程序,分析结果,在原有程序得出正确结果后,修改程序,将其改写为在类模板外定义,再按第(3)步骤运行。 (5)将调试好的程序保存在自己的用户目录中,文件名自定。 五、调试过程
1页
如有你有帮助,请购买下载,谢谢!
(1)2 (2)4 六、实验结果 (1)2 (2)4 七、总结
(1)掌握构造函数和析构函数的定义方法
(2)构造函数调用顺序:先调用所有基类的构造函数,然后调用派生类的构造函数;
(3)析构函数调用顺序:先调用派生类的析构函数,然后调用基类的析构函数,其顺序正好与构造函数调用顺序相反。 八、附录: (1)代码如下
#include
Base1(){cout<<\~Base1(){cout<<\};
class Base2 {public:
Base2(){cout<<\~Base2(){cout<<\};
class Derived1:public Base1,virtual public Base2 {public:
Derived1(){cout<<\~Derived1(){cout<<\};
class Derived2:public Base1,virtual public Base2
2页
如有你有帮助,请购买下载,谢谢!
{public:
Derived2(){cout<<\~Derived2(){cout<<\};
class Derived3:public Derived1,virtual public Derived2 {public:
Derived3(){cout<<\~Derived3(){cout<<\};
int main()
{Derived3 obj; return 0; }
(2)4代码如下
#include
double area()const{return 0.0;} void display(){}; };
class TwoDimShape:virtual public Shape { };
class ThreeDimShape:virtual public Shape { };
class Circle:public TwoDimShape {public:
Circle(double myr){R=myr;}
double area()const{return PI*R*R;}
void display(){cout<<\private: double R; };
class Rectangle:public TwoDimShape {public:
Rectangle(double myl,double myw) {L=myl; W=myw; }
double area()const{return L*W;}
void display(){cout<<\
3页