我看过一个非常相似的问题,但我不太确定我是否理解答案。如果我委托一个构造函数,初始化列表中的哪些初始化会发生?
例子:
MyClass::MyClass(int a, int b)
:
MyClass(a, b, NULL),
int1(a),
int2(b),
pOtherClass(NULL)
{
}
MyClass::MyClass(int a, int b, Other *p)
:
int1(a),
int2(b),
pOtherClass(p)
{
if (pOtherClass == NULL)
{
pOtherClass = &DefaultInstance;
}
}
由于编译器设置,在这里我必须有两个类的完整初始化列表。但我不想要的是:
- 第一个构造函数(
int, int
)调用第二个构造函数(int, int, Other *
) - 第二个构造函数分配一个默认地址
pOtherClass
- 第一个构造函数的初始化列表分配
pOtherClass
给NULL
.
我在顶部链接的问题似乎表明这种行为不会发生,但是 ( int, int
) 构造函数中初始化列表的意义何在?只是为了让编译器满意?