C++11支持在构造函数的初始化列表里调用其他构造函数,从而简化构造。
被调用的构造函数称为“目标构造函数”,调用目标构造函数的被称为“委派构造函数”。
#include <iostream>
using namespace std;
class A{
public:
A(int i) : A(i, 0, 'a'){} //委派构造函数,将构造任务交给目标构造函数
A(double d) : A(0, d, 'a'){} //委派构造函数,将构造任务交给目标构造函数
A(char c) : A(0, 0, c){} //委派构造函数,将构造任务交给目标构造函数
void printA()
{
cout<<"m_i="<<m_i<<" ";
cout<<"m_d="<<m_d<<" ";
cout<<"m_c="<<m_c<<endl;
}
private:
A(int i, double d, char c):m_i(i), m_d(d), m_c(c){} //目标构造函数,用于完成构造的最基本的操作,服务于其他构造函数
int m_i;
double m_d;
char m_c;
};
int main()
{
A a1(1);
a1.printA(); //输出:m_i=1 m_d=0 m_c=a
A a2(3.14);
a2.printA(); //输出:m_i=0 m_d=3.14 m_c=a
A a3('x');
a3.printA(); //输出&#x