// 构造函数的分类与调用
// 拷贝构造函数
#include <iostream>

using namespace std;

class A
{

public:
    int x;

public:
    A() {}
    A(A &other) // 拷贝构造函数
    {
        this->x = other.x;
    }
};

int main()
{
    A a1; // 调用无参的构造函数进行初始化 a1 对象
    a1.x = 10;
    cout << "a1 x = " << a1.x << endl;

    A a2(a1); // 使用拷贝构造
    cout << "a2 x = " << a2.x << endl;

    A *a3 = new A(); // 使用指针和new，在堆空间创建对象
    // a3->x = 20;
    cout << "a3 x = " << a3->x << endl;

    return 0;
}
