今天在读《C++Primer》时读到委托构造函数一节,书中关于委托构造函数是这样描述的:
一个委托构造函数使用它所属的类的其他构造函数执行自己的初始化过程,或者说它把自己的一些(或者全部)职责委托给了其他构造函数。和其他构造函数一样,一个委托构造函数也有一个成员初始值的列表和一个函数体。在委托构造函数内,成员的初始值列表只有一个唯一的入口,就是类名本身。和其他成员初始值一样,类名后面紧跟圆括号括起来的参数列表,参数列表必须与类中另外一个构造函数匹配。
初读这段话,可能理解上有一些偏差,一开始觉得意思就是一个构造函数可以用其他构造函数。于是写了段测试代码:
class A
{
private:
int a;
char c;
public:
A(int num):a(num){}
A(char C):c(C){}
A(int num,char C):A(num),A(C){}//调用其他两个构造函数
};
示例化一个对象x:A x(0,'x')
编译不过,提示错误:
error:mem-initializer for ‘class A’