C++:只用初始化列表初始化变量的几种情况

1.类成员函数中const变量的初始化(也就是第一点)

有几个容易混淆的地方:

(1)const 的变量只能通过构造函数的初始化列表进行初始化;(貌似在C++11中可以正常编译)

(2)static 的变量只能通过在类外重新定义进行初始化;

(3)static const 变量 只能通过在类中直接用”=”进行赋值。

# include <iostream>
using namespace std;
class A {
    private:
        static int a;
        static const double b = 2;
        const int c;
    public:
        A():c(1) {}
        int geta() {
            cout << "lalal" << endl;
            return a;
        }
};

int A::a = 1;

int main(void) {
    A a;
    cout << a.geta() << endl;
    return 0;
}

2.类成员中有引用

当类成员中含有引用,在构造函数中一定要通过初始化列表对引用进行初始化。

在网上看到一句写的很好的话:“const对象或引用只能初始化但是不能赋值。构造函数的函数体内只能做赋值而不是初始化,因此初始化const对象或引用的唯一机会是构造函数函数体之前的初始化列表中。”

3.类成员中包含一个不含默认构造函数的类的对象

当类成员中包含一个不含默认构造函数的类的对象,一定要在构造函数的初始化列表进行初始化。

4.派生类初始化基类

派生类初始化基类的成员要通过派生类的构造函数的初始化列表调用基类的构造函数。
原文链接: https://www.cnblogs.com/kaishan1990/p/6526547.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/250537

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午4:35
下一篇 2023年2月14日 上午4:36

相关推荐