C++的委托构造函数一定要放在初始化列表里面才行,即下面的CLS(3)。
#include <iostream>
using namespace std;
struct CLS {
int m_i;
CLS(int i) : m_i(i) {
cout << "CLS(int i) is called, m_i = " << m_i << endl;
}
CLS() : CLS(3)
{
cout << " CLS() is called, m_i = " << m_i << endl;
}
};
int main()
{
CLS obj;
cout << obj.m_i << endl;
return 0;
}
输出为:
CLS(int i) is called, m_i = 3
CLS() is called, m_i = 3
3
注意如果不用初始化列表初始化,m_i就写不进去!
#include <iostream>
using namespace std;
struct CLS {
int m_i;
CLS(int i) : m_i(i) {
cout << "CLS(int i) is called, m_i = " << m_i << endl;
}
CLS()
{
CLS(3);
cout << " CLS() is called, m_i = " << m_i << endl;
}
};
int main()
{
CLS obj;
cout << obj.m_i << endl;
return 0;
}
输出为:
CLS(int i) is called, m_i = 3
CLS() is called, m_i = 32765
32765
其中32765是随机数,因为m_i没有初始化。