实验七 继承与派生
【实验目的】
1、 掌握继承的概念。
2、 理解派生类与基类的关系。 3、 理解不同的继承类型。
4、 掌握继承下的构造函数和析构函数。 5、 掌握单继承和多继承使用方法。 6、 理解静态成员。
【实验内容】
1、上机分析下面程序,理解继承下构造函数和析构函数的执行顺序。 #include
public: A() {
cout<<\}
A( int m ) : x( m ) {
cout<<\} ~A() {
cout<<\} private: int x; };
class B : public A {
public: B() {
cout<<\}
B( int m, int n, int l ) : A( m ), a( n ), y( l ) {
cout<<\} ~B() {
cout<<\} private: A a; int y; };
int main() {
B b1, b2(5,6,7); return 0;
} 2、在下面一段类定义中,Derived类是有直接基类Base1和Base2所公有派生的,Derived类包含有两个间接基类Base,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员。
#include
protected: int x;
public:
Base(){x=0;} };
class Base1:public Base{
public: Base1(){} };
class Base2:public Base{
public: Base2(){} };
class Derived: (1) {
public:
Derived(){}
void Init(int x1,int x2){ (2) ; (3) ; }
void output(){cout< void main() { Derived d; d.Init(5,9); d.output(); } 3、在下面一段类定义中,Derived类公有继承了基类Base。需要填充的函数有注释内容给出了功能。并补充定义主函数,完成派生类对象的定义。 #include private: int mem1,mem2; public: Base(int m1,int m2) {mem1=m1;mem2=m2;} void output(){cout< class Derived:public Base { private: int mem3; public: //构造函数,由m1和m2分别初始化mem1和mem2,由m3初始化mem3 Derived(int m1,int m2,int m3); //输出mem1,mem2和mem3数据成员的值 void output(){ (1) ; cout< Derived::Derived(int m1,int m2,int m3): (2) { (3) ;} 4、上机分析下面程序,掌握静态成员 # include public: sample ( ){ ++n; } static int HM(){ return n; } ~sample ( ){ --n; } private: static int n; }; int sample::n = 10; int main() { sample c1,c2; sample *p = new sample(); cout< cout< 5、设计一个具有继承和派生的类,分析程序输出结果,理解类的继承与派生。 参考程序: #include