C++11 新标准扩展了构造函数初始值的功能,使得我们可以定义所谓的 委托构造函数。一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程,或者说它把它自己的一些(或全部)职责委托给了其他构造函数。
和其他构造函数一样,一个委托构造函数也有一个成员初始值的列表和一个函数体。在委托构造函数内,成员初始值列表只有一个唯一的入口,就是类名本身。和其他成员初始值一样,类名后面紧跟圆括号括起来的参数列表,参数列表必须与类中另外一个构造函数匹配。
举个例子:
class Test {
public:
Test(std::string s, int n)
: str(s), num(n){}
explicit Test() : Test("", 0) {}
Test(std::string s) : Test(s, 0) {}
private:
std::string str;
int num;
};
网友评论