C++成员初始化列表

 更新时间:2022年01月05日 09:53:38   作者:梁唐  
这篇文章主要介绍了C++成员初始化列表,除了可以使用构造函数对类成员进行初始化之外,C++还提供了另外一种初始化的方法,叫做成员初始化列表。下面来看看文章的详细吧,需要的朋友可以参考一下

文章转自: 公众号:Coder梁(ID:Coder_LT)

除了可以使用构造函数Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) {
    ...
};类成员进行初始化之外,C++还提供了另外一种初始化的方法,叫做成员初始化列表。

我们假设Classy是一个类,而mem1mem2mem3都是这个类的数据成员,那么类构造函数可以写成:

Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) {
    ...
};

上述代码将mem1初始化为n,将mem2初始化为了0,mem3初始化成了n*m+2。这些初始化工作是对象创建是完成的,并且在执行花括号中的内容之前。

有这么几点需要注意:

  • 这种格式只能用于构造函数
  • 必须用这种格式初始化非静态const数据成员(C++11之前)
  • 必须用这种格式初始化引用数据成员

数据成员被初始化的顺序和它们在类中定义的顺序相同,和初始化列表中的排列顺序无关。

C++11的类内初始化:

C++11当中允许我们直接对成员变量进行赋值:

class Classy {
    int mem1 = 10;
    const int mem2 = 20;
};

这和在构造函数当中使用成员初始化列表等价:

Classy::Classy() : mem1(0), mem2(20) {...}

我们在类当中直接初始化之后,我们也可以在成员初始化列表当中进行覆盖:

Classy::Classy(int n) : mem1(n) {...}

在这种情况下,mem1的值会被替换成n。

到此这篇关于C++成员初始化列表的文章就介绍到这了,更多相关C++成员初始化列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++ primer基础之容器insert

    C++ primer基础之容器insert

    这篇文章主要介绍了C++ primer基础之容器insert的相关资料,需要的朋友可以参考下
    2017-02-02
  • 深入理解C++模板如何实现多态思想

    深入理解C++模板如何实现多态思想

    这篇文章主要为大家详细介绍了C++模板如何实现多态的相关资料,文中的示例代码讲解详细,对我们深入了解C++有一定的帮助,感兴趣的可以了解一下
    2023-03-03
  • C语言中sizeof()与strlen()的区别详解

    C语言中sizeof()与strlen()的区别详解

    这篇文章主要给大家介绍了关于C语言中sizeof()与strlen()区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • C/C++获取键盘事件的方法

    C/C++获取键盘事件的方法

    今天小编就为大家分享一篇C/C++获取键盘事件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • C++简单QQ程序服务器端的实现代码

    C++简单QQ程序服务器端的实现代码

    这篇文章主要为大家详细介绍了C++简单QQ程序服务器端的实现代码,感兴趣的朋友可以参考一下
    2016-05-05
  • 使用C语言实现扫雷游戏

    使用C语言实现扫雷游戏

    这篇文章主要为大家详细介绍了使用C语言实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C++函数参数取默认值的深入详解

    C++函数参数取默认值的深入详解

    本篇文章是对C++中函数参数取默认值进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++常量详解一(常量指针与常量引用的初始化)

    C++常量详解一(常量指针与常量引用的初始化)

    这篇文章主要介绍了C++常量详解一(常量指针与常量引用的初始化),需要的朋友可以参考下
    2017-06-06
  • C++实现LeetCode数组练习题

    C++实现LeetCode数组练习题

    这篇文章主要介绍了C++实现LeetCode的几道数组练习题,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • QT实现TCP客户端自动连接

    QT实现TCP客户端自动连接

    这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12

最新评论