c++初始化列表

c++构造函数中使用初始化列表初始化成员变量时要注意成员变量初始化是按照声明的顺序初始化的。

/*
    编者:[email protected]

    功能:c++ 列表初始化用法演示

    环境:Win10 Professional 1703 / Microsoft Visual Studio 2017 / Microsoft Visual C++ 2017

    备注:无
*/

#include "stdafx.h"
#include 

class A {
private:
    int m_a;
    int m_b;
    int m_c;
public:
    A(int a, int b) : m_a(m_b), m_b(a) {}
    A(int a, int b, int c) : m_a(a), m_b(b), m_c(c) {}
    ~A() {}
    void show() {
        std::cout << "m_a = " << m_a << std::endl;
        std::cout << "m_b = " << m_b << std::endl;
    }
    void display() {
        std::cout << "m_a = " << m_a << std::endl;
        std::cout << "m_b = " << m_b << std::endl;
        std::cout << "m_c = " << m_c << std::endl;
    }
};

int main()
{
    /* 类A中的成员变量按照声明的顺序来逐个初始化,因此show()打印的成员变量m_a是一个不确定的值 */
    A(100, 300).show();
    /* m_a, m_b, m_c被正确的按照顺序初始化 */
    A(3, 4, 6).display();
    return 0;
}

c++初始化列表_第1张图片

你可能感兴趣的:(c++)