(续) 调用类A的构造函数 调用类B的构造函数 Y=2 Z=3 X+Y+7=6 调用类B的析构函数 调用类A的析构函数 注 在创建派生类的对象时,系统将首先调用其基类的构造 函数来初始化从基类中继承的数据成员,然后调用派生类自身 的构造函数初始化在派生类中新声明的数据成员。终止对象时, 析构函数的执行顺序则正好相反,即先调用派生类的析构函数 清除派生类中新声明的数据成员,再调用基类的析构函数清除 从基类中继承的数据成员
在创建派生类的对象时,系统将首先调用其基类的构造 函数来初始化从基类中继承的数据成员,然后调用派生类自身 的构造函数初始化在派生类中新声明的数据成员。终止对象时, 析构函数的执行顺序则正好相反,即先调用派生类的析构函数 清除派生类中新声明的数据成员,再调用基类的析构函数清除 从基类中继承的数据成员。 注 调用类A的构造函数 调用类B的构造函数 X=1 Y=2 Z=3 X+Y+Z=6 调用类B的析构函数 调用类A的析构函数 (续)
(132派生类构造函数和析构函数的构造规则】 通过为派生类定义一个带有初始化列表的构造函数 在C++中,派生类构造函数的一般格式为 派生类名(参数总表)基类名(参数表) ∥派生类新增成员的初始化语句
1、在C++中,派生类构造函数的一般格式为: 派生类名(参数总表):基类名(参数表) { // 派生类新增成员的初始化语句 }; 通过为派生类定义一个带有初始化列表的构造函数。 【13.2派生类构造函数和析构函数的构造规则】
例133当基类含有带参数的构造函数时,派生类构造函数的构造方 法 #includesiostream.h> class base i public: Base(int n) ∥基类的构造函数 cout<< Constructing base classIn" In, Basel 类的析构函数 i cout<< Destructing base classIn";) void shown cout<<i<<endl; private: int i
例13.3 当基类含有带参数的构造函数时, 派生类构造函数的构造方 法。 #include<iostream.h> class Base { public: Base(int n) //基类的构造函数 { cout<<"Constructing base class\n"; i=n; } ~Base() //基类的析构函数 { cout<<"Destructing base class\n"; } void showi() { cout<<i<<endl; } private: int i; };