继承 之 构造析构顺序
#include<iostream>
using namespace std;
class parent
{
public:
parent(int a, int b)
{
this->a = a;
this->b = b;
cout << "我是爸爸构造函数" << endl;
}
void printfP()
{
dotest();
}
virtual void dotest()
{
cout << "parent:dotest()" << endl;
}
~parent()
{
cout << "我是爸爸析构函数" << endl;
}
private:
int a;
int b;
};
class child :public parent
{
public:
child(int a, int b, int c) :parent(a, b)
{
this->c = c;
cout << "我是儿子构造函数" << endl;
}
~child()
{
cout << "我是儿子析构函数" << endl;
}
virtual void dotest()
{
cout << "child:dotest()" << endl;
}
private:
int c;
};
//在子类对象构造时,需要调用父类构造函数对其继承得来的成员进行初始化
//在系类对象析构时,需要调用父类析构函数对其继承得来的成员进行处理
//先调用父类构造函数 再调用子类构造函数
void objplay()
{
child c(1, 2, 3);
c.printfP();
}
void main()
{
objplay();
}
输出顺序