默许构造函数的疑问
默认构造函数的疑问:
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
int main( void )
{
CLS obj;
cout << obj.m_i << endl;
return 0;
}
输出是
————————————————————————————————————————————————————————————————————————————
defaultConstruct$ ./1
1240022480
关于下面的这个话不是很理解:求大虾指点
//默认构造函数的疑问:
在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始 化表达式才会随相应的构造函数一起调用。
------解决方案--------------------
http://www.cnblogs.com/chio/archive/2007/10/20/931043.html 这有详细回答
------解决方案--------------------
意思说的明白了。
就是你这样不给你初始化CLS( int i ) : m_i(i) {}
记得没这样用过,即使CLS(),也最好是CLS():m_i(0)
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
int main( void )
{
CLS obj;
cout << obj.m_i << endl;
return 0;
}
输出是
————————————————————————————————————————————————————————————————————————————
defaultConstruct$ ./1
1240022480
关于下面的这个话不是很理解:求大虾指点
//默认构造函数的疑问:
在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始 化表达式才会随相应的构造函数一起调用。
------解决方案--------------------
http://www.cnblogs.com/chio/archive/2007/10/20/931043.html 这有详细回答
------解决方案--------------------
意思说的明白了。
就是你这样不给你初始化CLS( int i ) : m_i(i) {}
记得没这样用过,即使CLS(),也最好是CLS():m_i(0)