子类对象在创建时首先会调用父类的构造函数,在父类的构造函数执行结束后,再执行子类的构造函数。当父类的构造函数有参数时,需要在子类的初始化列表中显示调用。
析构函数的调用的先后顺序与构造函数相反
结论:
构造函数:先调用父类 再调用子类 析构函数:先调用子类 再调用父类 如下所示:
代码
#include<iostream>
using namespace std;
class Parent
{
public:
Parent(int a, int b)
{
this->a = a;
this->b = b;
cout<<"父类构造函数..."<<endl;
}
~Parent()
{
cout<<"父类析构函数..."<<endl;
}
void printP(int a, int b)
{
this->a = a;
this->b = b;
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;
}
void printC()
{
cout<<"我是子类"<<endl;
}
private:
int c;
};
void playObj()
{
Child c1(1, 2, 3);
}
void main()
{
playObj();
system("pause");
return ;
}