zoukankan      html  css  js  c++  java
  • C++初始化顺序相关

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

     未完

  • 相关阅读:
    nodejs难点
    react 组件化
    vue router & vuex
    vue源码思考
    cookie & session
    servlet
    Hashmap
    Zookeeper+Kafka+flink+socket
    flink consumer can realize kafka avro with overwriting kafkaDeseriler, and executor multithread and genretic extends
    flink kafka consumer with avro schema. handling null
  • 原文地址:https://www.cnblogs.com/ashooter/p/4474377.html
Copyright © 2011-2022 走看看