C++类内初始化

C++类内初始化

引言

当成员变量参数较多,很可能在构造函数中忘记初始化某些成员变量,当需要访问某些变量时可能会产生意想不到的行为,故需一种简明的方式避免此问题的发生;

类内初始化

对于上述问题,可使用C++11中特性——类内初始化,防止遗漏某些变量的初始化,示例代码如下:

class Demo {
public:
    Demo() = default;
    Demo(const int a, const double b);
    ~Demo() = default;
    // ...
private:
    int     m_a = 1;
    double  m_b = 2.0;
    X*      m_c = nullptr;
    std::vector<int> m_d = {1, 2, 3};
};

Demo::Demo(const int a, const double b) : m_a(a), m_b(b)
{
    // do nothing
}

// ...

int main()
{
    Demo demo1;  // 此时各成员变量已经赋上相应初值
    Demo demo2(1, 2.0);

    // do something

    return 0;
}

结论

当类中成员变量较多时,可适当使用类内初始化来避免遗漏某些成员变量初始化值;


本文作者: 王同学