struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(123);
}
};
CLS obj;
cout << obj.m_i << endl;
输出不是123,在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始化表达式才会随相应的构造函数一起调用。
struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(123);
}
};
CLS obj;
cout << obj.m_i << endl;
输出不是123,在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始化表达式才会随相应的构造函数一起调用。