// 多个对象的构造和析构
// 类对象作为成员
#include <iostream>

using namespace std;

class A
{
public:
    A()
    {
        cout << "A()" << endl;
    }
    A(int x)
    {
        cout << "A(int x)" << endl;
    }
    ~A()
    {
        cout << "~A()" << endl;
    }
};

class B
{
public:
    B() // 构造函数用于初始化成员数据，说明成员变量先创建
    {
        cout << "B()" << endl;
    }
    B(int x)
    {
        cout << "B(int x)" << endl;
    }
    ~B() // A 的对象在 B 的空间中，A 对象在 B 空间释放之后就失效，失效也会释放空间（调用析构函数）
    {
        cout << "~B()" << endl;
    }

private:
    A a; // A 类的对象作为 B 类的成员
};

int main()
{
    B b1;
    return 0;
}
