struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
CLS obj;
cout << obj.m_i << endl;
--- 不是, 我个人是这样理解的:因为在CLS()中调用了CLS(0),所以在CLS()中又构造出一个CLS匿名对象,并用0来初始化该成员变量,而不是ojb对象.在CLS()调用结束时,这个对象就被析构了,而没有按我们原意图把0赋值给obj对象.
有关面向对象程序设计的书中都提到了,构造函数不能显示的调用.只能在初始化对象时使用.所以程序应该这样子写:
CLS obj(0);
cout << obj.m_i << endl;