1. class A{
    2. };

    c++中默认的函数有 6个:

    1. 默认构造函数

      // 类内
      A(){...};
      // 类外
      A::A(){...};
      
      无参的构造函数或者每个参数都有默认值的构造函数都是缺省构造函数,缺省构造函数只能有一个。
      
    2. 析构函数

      // 类内
      ~A(){...};
      // 类外
      A::~A(){...};
      
      对象生命周期结束时调用或delete时调用。
      
    3. 拷贝构造函数

      // 类内
      A(const A& a){...};
      // 类外
      A::A(const A& a){...};
      
      用一个对象去实例化另一个对象时、以值传递的方式进入函数体或返回时调用。
      

      ```cpp A a; A b(a); // 调用拷贝构造 A c = a; // 调用拷贝构造,c此时不存在,用a来构造和初始化c

    A d; d = a; // 调用赋值构造函数,c此时已经存在,a对象赋值给b对象

    
    4. 赋值运算符的重载(赋值函数、赋值构造函数)
    ```cpp
    // 类内
    A& operator=(const A& a){...};
    // 类外
    A& A::operator=(const A& a){...};
    
    1. 取地址运算符重载 (&)

      使用默认的即可,不要试图重载该一元运算符,很危险。
      

      ```cpp // 类内 A operator&(){return this;}; // 类外 A A::operator&(){return this;};

    //使用 A a; A *p=&a;

    
    
    6. const修饰的取地址运算符重载
    
           同样尽量使用的,不要试图重载。
    ```cpp
    // 类内
    const A* operator& () const {return this;};
    // 类外
    const A* A::operator&() const{return this;};
    

    函数括号后加const修饰表示该成员函数是常成员函数,函数体内不能修改任何成员变量。