资源描述
如有你有帮助,请购买下载,谢谢!
实验 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<iostream>
using namespace std;
class Base1
{public:
Base1(){cout<<"constructing Base1"<<endl;} ~Base1(){cout<<"destructing Base1"<<endl;}
};
class Base2
{public:
Base2(){cout<<"constructing Base2"<<endl;} ~Base2(){cout<<"destructing Base2"<<endl;}
};
class Derived1:public Base1,virtual public Bas
{public:
Derived1(){cout<<"constructing Derived1"<<endl ~Derived1(){cout<<"destructing Derived1"<<endl
};
class Derived2:public Base1,virtual public Bas
2页
如有你有帮助,请购买下载,谢谢!
{public:
Derived2(){cout<<"constructing Derived2"<<endl;} ~Derived2(){cout<<"destructing Derived2"<<endl;}
};
class Derived3:public Derived1,virtual public Derived2
{public:
Derived3(){cout<<"constructing Derived3"<<endl;} ~Derived3(){cout<<"destructing Derived3"<<endl;}
};
int main()
{Derived3 obj;
return 0;
}
(2)4 代码如下
#include<iostream>
using namespace std; const double PI=3.14;
class Shape
{public:
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<<"Area of circle is ";}
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<<"Area of rectangle is";}
3页
展开阅读全文