C++开发初级
1066 浏览 5 years, 11 months
3.1.9 委托构造函数(仅限C++11)
版权声明: 转载请注明出处 http://www.codingsoho.com/委托构造函数(仅限C++11)
委托构造函数(Delegating Constructor
)允许构造函数调用同一个类的其他构造函数。然而,这个调用不能放在构造函数体内,而必须放在构造函数初始化器中。下面给出了一个示例:
SpreadsheetCell::SpreadsheetCell(const string& initialValue) :
SpreadsheetCell(stringToDouble(initialValue))
{
}
当调用采用字符串做参数的构造函数(委托构造函数)的时候,首先将调用委托给目标,也就是采用double做参数的构造函数。当目标构造函数返回时,再执行委托构造函数。
当使用委托构造函数时,要注意避免出现构造函数的递归。例如:
class MyClass
{
MyClass(char c) : MyClass(1.2) {}
MyClass(double d) : MyClass("m") {}
}
第一个构造函数委托第二个构造函数,第二个构造函数又委托第一个。C++标准没有定义代码的这种行为,这取决于编译器。