类构造时先构造成员后构造自身
#include <iostream>
#include <memory>
using namespace std;
class MemberClass
{
public:
MemberClass(int _id)
{
id = _id;
cout << "MemberClass" << id << "'s constructor call" << endl;
}
~MemberClass()
{
cout << "MemberClass" << id << "'s destructor call" << endl;
}
private:
int id;
};
class MyClass
{
public:
MyClass()
: m_pObj(new MemberClass(1)),
m_obj(2)
{
cout << "MyClass's constructor call" << endl;
}
~MyClass()
{
cout << "MyClass's destructor call" << endl;
}
private:
unique_ptr<MemberClass> m_pObj;
MemberClass m_obj;
};
int main()
{
MyClass();
cout << "Test End!" << endl;
return 0;
}
输出为
MemberClass1's constructor call
MemberClass2's constructor call
MyClass's constructor call
MyClass's destructor call
MemberClass2's destructor call
MemberClass1's destructor call
Test End!