01.C++ 不带参数的公有继承
#include<iostream>
using namespace std;
class CFather
{
public:
CFather()
{
cout << " CFather " << endl;
}
~CFather()
{
cout << " ~CFather " << endl;
}
};
class CSon :public CFather
{
public:
CSon()
{
cout << " CSon " << endl;
}
~CSon()
{
cout << " ~CSon " << endl;
}
};
int main()
{
//CSon son; //执行顺序: 先到父类构造,在到子类构造。
{
//局部变量(栈区)生命周期结束之后,调用析构函数;
CSon son; //执行顺序: 先到父类构造,子类构造,子类析构,父类析构;
//先构造的,后析构
}
system("pause");
return 0;
}
不执行析构运行结果:
执行析构运行结果:
02。带参数的公有继承
#include<iostream>
using namespace std;
class CFather
{
public:
CFather(int a)
{
cout << " CFather " << endl;
}
~CFather()
{
cout << " ~CFather " << endl;
}
};
//class CSon :public CFather
//{
//public:
// CSon():CFather(2)
// {
// cout << " CSon " << endl;
// }
// ~CSon()
// {
// cout << " ~CSon " << endl;
// }
//
//};
//=======带参数的公有继承,可以类似于一个类包含另一个类的对象,通过初始化列表赋值====//
class CSon
{
public:
CFather father;
public:
CSon():father(2)
{
cout << " CSon " << endl;
}
~CSon()
{
cout << " ~CSon " << endl;
}
};
//===带参数的公有继承,可以类似于一个类包含另一个类的对象,通过初始化列表赋值======//
int main()
{
//CSon son; //执行顺序: 先到父类构造,在到子类构造。
{
//局部变量(栈区)生命周期结束之后,调用析构函数;
CSon son; //执行顺序: 先到父类构造,子类构造,子类析构,父类析构;
//先构造的,后析构
}
system("pause");
return 0;
}