case 1:在类外定义构造函数,所有data member都在初始化列表中进行初始化。
class SupportClass
{
public:
SupportClass()
{
cout << "SupportClass() is called" << endl;
}
SupportClass(SupportClass&)
{
cout << "SupportClass(SupportClass&) is called" << endl;
}
~SupportClass()
{
cout << "~SupportClass() is called" << endl;
}
SupportClass& operator=(SupportClass&)
{
cout << "SupportClass()& operator=(SupportClass&) is called" << endl;
return *this;
}
};
class TestInitialize
{
public:
TestInitialize(SupportClass arg);
private:
SupportClass data;
};
TestInitialize::TestInitialize(SupportClass arg) :data(arg){}
int main()
{
SupportClass sc;
cout << endl;
TestInitialize ti(sc);
return 0;
}
结果