委托构造函数
什么是委托构造函数?
委托构造函数是由C++11引入的新概念,是对C++构造函数的改进,允许构造函数使用初始化列表调用同类中的其他构造函数,旨在简化构造函数的书写,提升代码的可维护性,降低代码的冗余性。
我们先写个例子感受一下:
class Foo
{
public:
Foo(): m_nType(4), m_cName('a') {
initData(); }
Foo(int type): m_nType(type), m_cName('a') {
initData(); }
Foo(char c): m_nType(4), m_cName(c) {
initData(); }
private:
void initData() {
}
private:
int m_nValue;
char m_cName;
};
在上面的类定义中,有三个构造函数,从形式上来说,有几个共同点:
- 使用初始化列表来初始化m_nValue和m_cName这两个成员变量
- 函数体中都只调用了initData()这个函数。
使用C++11提供的委托构造函数就可以简写为以下形式:
class Foo
{
public:
Foo(<