码迷,mamicode.com
首页 > 编程语言 > 详细

C++初始化顺序相关

时间:2015-05-03 18:47:05      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

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. 基类的析构函数

 未完

C++初始化顺序相关

标签:

原文地址:http://www.cnblogs.com/ashooter/p/4474377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!