#include<iostream>
using namespace std;
class Base {
public:
Base(int data)
:ma(data)
{
cout << "Base()" << endl;
}
~Base() {
cout << "~Base()" << endl;
}
protected:
int ma;
};
class Derive :public Base{
public:
Derive(int data)
:Base(data)//直接调用基类的构造函数而不是自己去初始化基类成员变量
, mb(data)
{
cout << "Derive()" << endl;
}
~Derive() {
cout << "Derive()" << endl;
}
protected:
int mb;
};
int main() {
Derive d(20);
return 0;
}
派生类对象的构造析构过程:
1.派生类调用基类的构造函数,初始化从基类继承来的成员
2.派生类调用自己的构造函数,初始化自己的成员
…派生类对象作用域到期…
3.调用派生类自己的析构函数,释放派生类成员可能占用的外部资源(堆内存,文件)
4.调用基类的析构函数,释放从基类继承来的成员可能占用的外部资源(堆内存,文件)