如果一个类中重载了多个构造函数,并且都需要对某些变量初始化,会产生许多重复的代码。
委托构造函数delegating constructor
在同一个类中的构造函数可以调用另一个构造函数,简化初始化。
以下:前两种构造函数都依赖第三种构造函数。
class A
{int m_x;int m_y;
public:A():A(0,0){}A(int x):A(x,0){}A(int x,int y):m_x(x),m_y(y){}
}
注意:
只能通过成员赋值初始化,不能用初始化列表初始化成员变量;
链式的调用构造函数不能形成一个环,否则会抛出异常;
每个构造函数都可以委托余下构造函数代理,他既可以委托别的构造函数构造,也可以自己做代理函数。
拷贝构造函数也可以用这种语法。