首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++】构造函数初始化列表 ③ ( 构造函数 的 初始化列表 中 为 const 成员变量初始化 )

构造函数初始化列表 总结 : 初始化列表 可以 为 类的 成员变量 提供初始值 ; 初始化列表 可以 调用 类的 成员变量 类型的 构造函数 进行成员变量初始化操作 ; 初始化列表 可以 使用 构造函数...初始化 , 所有的构造函数都要进行初始化操作 ; 一、构造函数 的 初始化列表 中 为 const 成员变量初始化 1、初始化 const 常量成员 如果 类 中定义了 被 const 修饰 的 成员变量..., 那么该成员变量 必须被初始化 , 否则会报错 ; 对象中的 const 成员 必须在 声明后 立刻进行初始化 ; const 成员的初始化 只能通过 构造函数 的 初始化列表 进行初始化 ; 注意...进行赋值 的 , 因此 这里 必须在 构造函数的 初始化列表中 对 const 成员变量 进行赋值 ; 2、错误代码示例 - 没有初始化常量成员 在下面的 类 B 中 , 定义了常量 const int..., 对 常量成员 进行初始化操作 ; 3、正确代码示例 - 在初始化列表中初始化常量成员 在下面的 类 B 中 , 所有的 构造函数 中 , 都要使用 初始化列表 初始化 常量成员 , 只要遗漏一个构造函数

24330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++初始化列表

    一、什么是初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段 二、构造函数执行分为初始化和构造两个阶段,且初始化化阶段优先于计算阶段...三、一个好的原则是,能使用初始化列表的时候尽量使用初始化列表 因为初始化列表有时能少调用一次默认构造函数 四、必须要用初始化列表的时候 1.常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面...2.引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面 3....没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化 五 、成员变量是按照在类中声明的顺序被初始化的而不是在初始化列表中的顺序 struct foo...从执行结果上看,好像是将34行中B b=B(1,2,3,'a');的1,2,3,'a'依次赋值给26行中B(int a2,int b2,char c2,int d2):A(a2,b2,c2)的a2,b2

    79590

    C++11就地初始化与列表初始化

    class C { private: static const int a=10; //yes int a=10; //no } 在C++11中,结构体或类的数据成员在申明时可以直接赋予一个默认值...,初始化的方式有两种,一是使用等号“=”,二是使用大括号列表初始化的方式。...1.2就地初始化与初始化列表的先后顺序 C++11标准支持了就地初始化非静态数据成员的同时,初始化列表的方式也被保留下来,也就是说既可以使用就地初始化,也可以使用初始化列表来完成数据成员的初始化工作。...当二者同时使用时,并不冲突,初始化列表发生在就地初始化之后,即最终的初始化结果以初始化列表为准。...从C++11开始,对列表初始化(List Initialization)的功能进行了扩充,可以作用于任何类型对象的初始化,至此,列表初始化方式完成了天下大一统。

    4.8K10

    C++中列表初始化,你知多少?

    我是木荣,今天我们学习一下C++中列表初始化相关的知识。 unsetunset1、何为列表初始化unsetunset C++中的列表初始化是一种用一对花括号 {} 来进行对象初始化的语法。...在 C++11 引入的列表初始化中,提供了对缩窄转换的更严格的检查,不允许在列表初始化时发生缩窄转换,从而帮助程序员避免潜在的问题。...对于类类型,构造函数的匹配规则 当进行列表初始化时,编译器会根据构造函数的参数匹配规则选择相应的构造函数。...unsetunset4、列表初始化的好处unsetunset 列表初始化(Uniform Initialization)在 C++ 中引入的好处主要有以下几点: 一致性: 列表初始化提供了一种一致的初始化语法...这是因为在 C++ 中,如果声明一个函数的时候带有空括号,编译器会将其解释为一个函数声明而不是一个对象定义。

    8710

    Linux 初始化检查列表6

    文件系统调优 系统的默认属性是会将最近的读请求时间记录到文件系统的元数据里,这样一次读请求会产生至少一次写请求,在很多场景下,这种特性没有应用价值,所以可以关掉来减少IO开销 在挂载选项里加入 noatime...0 0 [root@check-list ~]# Tip: noatime 包含了 nodiratime ,所以不必重复指定 放开句柄数 默认情况下一个用户只能打开1024个文件句柄,这是出于安全的考虑...,linux中一切都是文件,安全的同时也限制了用户能同时操作对象数的上限,但是很多场景中(比如web前端),会需要打开很多个连接,以对外提供服务,高并发的情形下很容易耗尽这个配额,这时就会产生 Too...many open files 的报错,如果适当放开这个限制,就可以提供更多的服务 /proc/sys/fs/file-max、/proc/sys/fs/file-nr 分别记录了系统中可以打开的最大文件数和当前已经打开的文件数.../etc/security/limits.conf 可以配置打开文件句柄数的软硬限制,它是被 PAM 模块调用,所以它在每个用户登录时会生效 [root@check-list ~]# cat /proc

    69020

    C++之初始化列表

    const成员变量, 但是面临的问题是: 如何初始化类中const 成员变量 这时候引入本文的重点, 初始化列表出场: 类成员的初始化 C++ 中提供了初始化列表对成员变量进行初始化 语法规则 ClassName...::ClassName() : m1(v1), m2(v1,v2),m3(v3) { //some other initialize operation } 注意事项 成员的初始化顺序与成员的声明顺序相同...成员的初始化顺序与初始化列表中位置无关 初始化列表先于构造函数的函数体执行 修改上述代码如下: #include class Test { private: const...const 成员会被分配空间的 类中的const 成员的本质是只读变量 类中的const 成员只能在初始化列表中指定初始值 小结 类中可以使用初始化列表对成员进行初始化 初始化列表先于构造函数体执行...类中可以定义const 成员变量 const 成员变量必须在初始化列表中指定初值 const 成员变量为只读变量

    84560

    Linux 初始化检查列表3

    Tip: 更新完成后,对服务器进行重启 init 6 同步时间 在同一个网络中,最好将时间进行统一,否则日志信息都会误导分析,更不用说一些对时间非常敏感的服务了 [root@check-list ~]#...1:off 2:off 3:off 4:off 5:off 6:off [root@check-list ~]# ---- 安全 更改root口令 云主机服务商提供了初始登录密码,但显然不是一个安全的密码...[root@check-list ~]# 禁止root ssh登录 禁止root的ssh登录可以有效防止通过直接破解root密码来获取系统最高权限,或者通过多次的尝试失败来进行登录的DOS攻击 [root...@check-list ~]# visudo ---------- User_Alias USERSU = saops USERSU ALL=(root) ALL 防火墙设置 防火墙是安全领域中的重要环节...,能够有效过滤掉非法访问 确认防火墙是开启的,并且只有22号端口是开放的,以后随着业务的扩展会逐步更新防火墙配置 [root@check-list ~]# chkconfig --list | grep

    52330

    C++初始化列表深入探索

    B的对象,然后并在函数体中对m_mX进行了初始化,运行结果如下图所示: ?        ...我们暂且先不判断放在函数体中的初始化的好坏,我们先来使用初始化列表的方式对其初始化一下看看结果是什么样的,初始化列表方法运行结果: ?      ...行语句就是这么来的,其中有两行不会调用默认构造函数这里就不解释了,不清楚的可以看这篇博客:传送门,由此可见,m_mX=100这一行代码被转换成了这么多行,我们再来看看使用初始化列表的方法来初始化的话,编译器是怎么做的...初始化列表的细节问题: 1. 虽然初始化列表的写法比较奇怪,但是站在编译器的角度来看,实际上初始化列表的代码还是被安插在函数体中去执行。...2.当自己在函数体中已经写了一部分的代码,那么初始化列表的代码是优先于自己写的代码执行的。 3.对于对象成员的初始化顺序,是按照对象成员的定义顺序执行的,而不是按照初始化列表的顺序执行的。

    64610

    类——构造函数之初始化列表

    再谈构造函数 1.1 构造函数体赋值 我们先来复习一下构造函数,如下: 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。...1.2.2初始化列表的格式 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟 一个放在括号中的初始值或表达式。...每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次) 2....在前文中,我们还提到了,由于编译器对于内置类型的初始化不做处理(结果内置类型就变为了随机值),在C++11 中针对内置类型成员不初始化的缺陷,打了补丁,即:内置类型成员变量在 类中声明时可以给默认值...:初始化列表的缺省值——定义缺省值) 1.2.5初始化列表的顺序 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后 次序无关。

    89120
    领券