C++构造函数处理顺序如下:
1、为传入的非引用实参通过拷贝构造函数建立临时变量,引用实参省略这一步。
2、调用基类构造函数。
3、处理成员变量的初始化工作,按照成员变量定义的顺序进行初始化。初始化列表里的变量使用拷贝构造函数进行初始化,否则使用默认构造函数进行初始化。
4、执行构造函数用户定义初始化内容
先看一段代码
#include <iostream>
using namespace std;
class M{
public:
M(){
cout << "M default" << endl;}
~M(){
cout << "~M" << endl;}
};
class T{
public:
T(){
cout << "T default" << endl;}
~T(){
cout << "~T" << endl;}
T(T &t) {
cout << "T copy: " << endl;}
T& oper