• 构造函数可以互调,但不能在函数体内,只能通过初始化列表的形式
  • 构造函数中不要写业务逻辑
  • 析构函数中不要 delete this ,这会导致析构递归,最终导致栈溢出
class Test{
public:
    Test(int a, int b, int c){
        _a = a;
        _b = b;
        _c = c;
    }
    // 正确
    Test(int a, int b):Test(a, b, 100){
    }
    /*
    // 错误
    Test(int a, int b){
        _a = a;
        _b = b;
        Test(a, b, 100);    // 此处只是产生一个临时对象,马上又被释放掉了,没有任何意义
    }
    */
    int getA(){
        return _a;
    }
    int getB(){
        return _b;
    }
    int getC(){
        return _c;
    }
private:
    int _a;
    int _b;
    int _c;
};
int main( )
{  
    Test t1(10, 20);
    cout << t1.getA() << endl;
    cout << t1.getB() << endl;
    cout << t1.getC() << endl;
    return 0;
}

输出:

Start
10
20
100
0
Finish