struct构造函数问题
#include <iostream.h>
struct cls
{
int m_i;
cls(int i):m_i(i){cout<<"int param cls."<<endl;}
cls()
{
cout<<"no param cls."<<endl;
cls(0);
}
};
void main()
{
cls obj;
cout<<obj.m_i<<endl;
}
为什么不是输出0,而是输出一个很大的负数?
[解决办法]
参考此文:
http://blog.vckbase.com/panic/archive/2005/06/09/6304.aspx
构造函数调用构造函数
[解决办法]
也就是说obj.m_i输出前,cls(0)已经被析构了,输出为以随机数.
[解决办法]
cls(0);
其实是创建一个零时对象不是调用函数