顺序:
静态数据成员的构造函数→父类的构造函数→非静态数据成员的构造函数→自己的构造函数
#include<iostream>
#include<Windows.h>
using namespace std;
class M {
public:
M() { cout << "M:M" << endl; }
};
class N {
public:
N() { cout << "N:N" << endl; }
};
class A {
public:
A() { cout << "A:A" << endl; }
};
class B :public A{
public:
B() { cout << "B:B" << endl; }
private:
M m1, m2;
static N n1;
};
N B::n1; //初始化一下静态成员
int main() {
B b1;
system("pause");
return 0;
}
静态成员只会调用一次构造函数
int main() {
B b1;
cout << "\n\n*************\n\n";
B b2;
system("pause");
return 0;
}
子类的析构函数调用顺序,和子类的构造函数的调用顺序相反
C++