我在定义不同的构造函数从同一个类中相互调用时遇到问题:
class
MyClass
{
public:
int m_a;
inline MyClass(void) { MyClass(42); }; //java-like
inline MyClass( int a ): m_a(a){};
};
class
MyClass1
{
public:
int m_a;
inline MyClass1(void) : MyClass1(42){ };
inline MyClass1( int a ): m_a(a){};
};
MyClass mc;
MyClass1 mc1;
int main (int argc, char** argv)
{
printf("MyClass %d\n", mc.m_a); // prints 0 (42 expected)
printf("MyClass1 %d\n", mc1.m_a); // prints 42
}
为什么第一个嵌套构造函数调用失败(返回 0 而不是预期的 42?