C++继承时构造函数执行顺序

#include <iostream>
using namespace std;

int getInt(int para)
{
cout << "int getInt(int para)" << endl;

return para;
}

class ClassA
{
public:
ClassA() : mValue(getInt('A'))
{
mValue = 300;

cout << "mValue is: " << mValue << endl;

cout << "ClassA()" << endl;
}

~ClassA()
{
cout << "~ClassA()" << endl;
}

int mValue;
};

class ClassB : public ClassA
{
public:
ClassB()
{
cout << "ClassB()" << endl;
}

~ClassB()
{
cout << "~ClassB()" << endl;
}
};

class ClassC : public ClassB
{
public:
ClassC()
{
cout << "ClassC()" << endl;
}

~ClassC()
{
cout << "~ClassC()" << endl;
}
};

void printStars()
{
cout << "******************************" << endl;
}

int main(int argc, char** argv)
{
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!

printStars();

ClassC* C1 = new ClassC();

printStars();

delete C1;

printStars();

return 0;

}


程序执行结果:

!!!Hello World!!!
******************************
int getInt(int para)
mValue is: 300
ClassA()
ClassB()
ClassC()
******************************
~ClassC()
~ClassB()
~ClassA()
******************************


1、构造函数,父类的比子类的先执行;

2、析构函数,子类的比父类的先执行;

3、构造函数初始化列表中的内容,比构造函数中的语句先执行;

你可能感兴趣的:(C++继承时构造函数执行顺序)