c++对象创建过程略解
对象的创建大致分三个阶段
- 执行基类的构造函数
- 执行类类型成员的构造函数
- 执行自己类的构造函数
- 执行类的基类构造函数
-
- 所有基类都会执行自己的构造函数,无论这个基类在不在初始化列表中。
-
- 可以在初始话列表中指定构造函数,如果不指定。就调用默认构造函数。
-
- 按声明继承时基类的书写顺序执行。与初始化列表中的顺序无关。
- 对类的类类型成员进行初始化
-
- 所有类类型成员都会调用构造函数对自己进行初始化,无论这个成员在不在初始化列表中。
-
- 可以在初始话列表中指定构造函数,如果不指定。就调用默认构造函数。
-
- 按声明继承时基类的书写顺序执行。与初始化列表中的顺序无关。
- 执行类自己的构造函数
demo:
#include<bits/stdc++.h>
using namespace std;
class Parent2 {
public:
Parent2() {
cout << "Parent2 constructor is called\n";
}
};
class Parent1 {
public:
Parent1() {
cout << "Parent1 constructor is called\n";
}
};
class A {
public:
A() { cout << "A constructor is called\n"; }
};
class B {
public:
B() { cout << "B constructor is called\n"; }
};
class Son : Parent1 , Parent2
{
A a;
B b;
public:
Son(): b(), Parent1()
{
cout << "Son constructor is callede\n";
}
};
int main()
{
Son s;
return 0;
}
执行结果:
Parent1 constructor is called
Parent2 constructor is called
A constructor is called
B constructor is called
Son constructor is callede
浙公网安备 33010602011771号