我是靠谱客的博主 殷勤紫菜,最近开发中收集的这篇文章主要介绍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++成员初始化列表的全部内容,希望文章能够帮你解决C++成员初始化列表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(94)

评论列表共有 0 条评论

立即
投稿
返回
顶部