C++初始化顺序相关

1. 设置函数默认参数的顺序: 从右到左

    原因: 调用函数时填写参数的顺序是从左到右,因此默认参数必须从右到左给

2. 类的数据成员初始化列表初始化顺序为: 从右到左

    例子:    

class ClassA
{
public:
    ClassA():m_n2(0), m_n1(m_n2+2)
    {}
    void Print()
    {
        cout<<"m_n1: "<< m_n1 << " m_n2: "<< m_n2 <<endl;
    }
    ~ClassA()
    {}
private:
    int m_n1;
    int m_n2;
};
int _tmain(int argc, _TCHAR* argv[])
{
    ClassA obj;
    obj.Print();
    return 0;
}

输出结果: m_n1: 0xccccccce m_n2:0  (m_n2初始值为0xcccccccc)

3. 类的数据成员与构造函数的初始化顺序: 先初始化类的数据成员,再调用构造函数

    原因: 调用构造函数的时候,构造函数可能需要访问数据成员,因此需要数据成员提前初始化好。

4. 类的数据成员与析构函数的销毁顺序: 先调用析构函数,再销毁类的数据成员

    原因: 调用析构函数时,析构函数可能需要访问数据成员,因此需要数据成员稍后析构。

5. 构造函数的调用顺序(按照某大姐的说法:先有爷爷,再有父亲,再有儿子):

    a. 基类构造函数  b. 子对象构造函数  c. 派生类构造函数

6. 析构函数的调用顺序:

    a. 派生类的析构函数  b. 子对象的析构函数  c. 基类的析构函数

 未完

posted on 2015-03-03 11:04  一直向前的射手2  阅读(677)  评论(1编辑  收藏  举报

导航