C++中使用初始化列表出现原因

2023-11-11

1.必须这样做:
如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,
而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,
如果没有初始化列表,那么他将无法完成第一步,就会报错。


2、类成员中若有const修饰,必须在对象初始化的时候,给const int m 赋值
当类成员中含有一个const对象时,或者是一个引用(本质是一个常指针)时,他们也必须要通过成员初始化列表进行初始化,
因为这两种对象要在声明后马上初始化,而在构造函数中,做的是对他们的赋值,这样是不被允许的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中使用初始化列表出现原因 的相关文章

  • 揭秘——STL空间配置器

    为什么要有空间配置器呢 这主要是从两个方面来考虑的 1 小块内存带来的内存碎片问题 单从分配的角度来看 由于频繁分配 释放小块内存容易在堆中造成外碎片 极端情况下就是堆中空闲的内存总量满足一个请求 但是这些空闲的块都不连续 导致任何一个单独
  • C语言/C++基础之跨年烟花程序代码(附源码)

    C语言 C 基础之跨年烟花程序代码 程序之美 前言 主体 运行效果 代码实例 结束语 程序之美 前言 元旦将至 新年将至 转眼间2022年即将过去 崭新的一年正向我们缓缓走来 风花雪夜新年临近 入冬寒意随风吹进 繁星点点缀满天际 黎明晨阳元
  • C++指向类成员(数据、函数)的指针

    指向 类 的成员的指针包含两种 指向 类 的数据成员的指针 指向 类 的成员函数的指针 注意 指向的是 类的成员 和类发生关系 指向非静态公有数据成员的指针 在定义时必须和类相关联 在使用时必须和对象相关联 1 指向类的数据成员的指针 1
  • 存储类型auto,static,extern,register的区别

    变量和函数的属性包括数据类型和数据的存储类别 存储类别指数据在内存中存储方式 静态和动态 包含auto static register extern四种 内存中 具体点来说内存分为三块 静态区 堆区 栈区 外部变量和全局变量存放在静态区 局
  • C语言/C++基础之奔跑的小人

    C语言 C 基础之奔跑的小人 程序之美 前言 主体 运行效果 代码示例一 运行结果 代码示例二 结束语 程序之美 前言 C语言实现的会动的小人 非常有意思 代码也比较简单 有兴趣的小伙伴 可以抽时间学习或者了解下 其实就是一些字符的拼接 最
  • 编程求解字符串中每个字母出现的次数

    统计在tt字符中 a 到 z 26各字母各自出现的次数 并依次放在pp所指的数组中 include
  • C++ operator == 的一些思考

    最近写代码的时候 需要重载 以前也没有进行过太多的思考 都是顺手就写了 在这里就总结一下 下面的代码是 应该是重载 用的最多的写法了 class Demo public Demo int a a a Demo bool operator c
  • std::thread的常用参数传递总结

    实参的生命周期 给std thread传递参数的时候要注意 参数是引用或者指针的情况下 要注意生命周期的问题 看代码 include
  • C/C++基础讲解(一百二十八)之经典篇(时间函数举例四剑客)

    C C 基础讲解 一百二十八 之经典篇 时间函数举例四剑客 程序之美 前言 很多时候 特别是刚步入大学的学子们 对于刚刚开展的计算机课程基本上是一团迷雾 想要弄明白其中的奥秘 真的要花费一些功夫 我和大家一样都是这么啃过来的 从不知到知知
  • lua学习笔记—table

    1 什么是table table是lua的一种数据结构 可以用来创建数组或映射 lua中的table使用的是关联型数组 关联数组的key值可以是除过nil之外任意类型的值 table的大小是不固定的 可以自己进行扩容 2 如何构造table
  • Unix时间戳和北京时间的相互转换(C语言实现 )

    一 问题背景 最近物联网项目中需要上传包含时间戳的设备数据到服务器平台 原本想把 年 月 日 时 分 秒 分别用一个 uint8 t 的数据类型去存储 即占用6个字节 但是在平台配置协议时 只有一种叫 Unix时间戳 的数据类型 Unix时
  • 模板特例化与偏特化

    模板是C 中一个很重要的特性 写一份代码能用于多种数据类型 包括用户自定义类型 例如 STL的sort 函数可以用于多种数据类型的排序 类stack可以用作多种数据类型的栈 但是 如果我们想对特定的数据类型执行不同的代码 而不是通用模板 呢
  • 函数参数是右值引用类型,能够接受什么样的参数输入

    假设我们有一个函数 class Data void func Data data 那么func能接收什么样的参数输入 情形一 Data data func data Error cannot bind Data lvalue to Data
  • c++11~c++20 -05-thread_local

    目录 一 thread local简介 二 示例 2 1 全局变量 2 2 局部变量 2 3 类对象 2 4 类成员变量 一 thread local简介 thread local变量是C 11新引入的一种存储类型 它会影响变量的存储周期
  • C++中使用初始化列表出现原因

    1 必须这样做 如果我们有一个类成员 它本身是一个类或者是一个结构 而且这个成员它只有一个带参数的构造函数 而没有默认构造函数 这时要对这个类成员进行初始化 就必须调用这个类成员的带参数的构造函数 如果没有初始化列表 那么他将无法完成第一步
  • 静态链接和动态链接的区别

    在理解静态和动态 共享 库链接之间的区别之前 让我们先看一个典型程序的生命周期 从编写源代码到执行它 首先使用任何程序员选择的编辑器以文本文件的形式编写程序 然后必须对其进行编译以将文本文件转换为机器可以理解和执行的目标代码 通常我们编写的
  • C/C++:02 1/2. 类和对象

    文章目录 前言 1 类的定义和对象的创建 类的定义 创建对象 访问类成员 使用对象指针 2 类的成员变量和成员函数 成员函数的定义 类体和类外定义成员函数的区别 3 C 类成员的访问权限以及类的封装 成员的访问限定 类的封装 6 C 构造函
  • GNU __attribute__ 机制

    http blog 163 com sunm lin blog static 9192142200741533038695
  • C/C++:06. 模板

    文章目录 前言 一 函数模板 二 类模板 三 函数模板重载 总结 前言 C 的模板是被迫推出的 最直接的动力来源于对数据结构的封装 数据结构关乎的是数据的存储 以及存储后如何进行增加 删除 修改和查询操作 在实际开发中有着非常广泛的应用 C
  • 位运算及其应用详解

    http blog chinaunix net uid 21411227 id 1826986 html 一 逻辑运算符 1 位与运算 1 运算规则 位与运算的实质是将参与运算的两个数据 按对应的二进制数逐位进行逻辑与运算 例如 int型常

随机推荐

  • 详解shell输出重定向:>/dev/null 2>&1

    1 输入输出重定向介绍 重定向简单来说就是把本来已经默认的 确定的输入输出给重新定位到你想要的地方 重定向这个概念在C语言中就有 在C语言编程中 标准输出是屏幕 使用printf 函数默认是输出到屏幕显示 但是有时候我们需要将信息输出到文件
  • BOM特效:返回顶部按钮

    BOM特效开发 返回顶部按钮制作 BOM特效开发 返回顶部按钮制作 改变document documentElement scrollTop属性 结合定时器逐步改变此值以动画形式返回顶部 在这里插入代码片
  • 基于HAL库的FREERTOS-----------三.队列

    一 队列简介 在实际的应用中 常常会遇到一个任务或者中断服务需要和另外一个任务进行 沟通交流 这个 沟通交流 的过程其实就是消息传递的过程 在没有操作系统的时候两个应用程序进行消息传递一般使用全局变量的方式 但是如果在使用操作系统的应用中用
  • STM32学习笔记---TIM_GetFlagStatus和TIM_GetITStatus两个固件库函数的区别

    TIM GetFlagStatus和TIM GetITStatus两个函数的区别 最近结合正点原子基于STM32F103ZET6芯片开发板的触摸按键实验 在对TIM5 CH2捕获状态进行判断时发现利TIM GetFlagStatus和TIM
  • [C++]适配器模式

    适配器模式 Adapter Pattern 是作为两个不兼容的接口之间的桥梁 这种类型的设计模式属于结构型模式 它结合了两个独立接口的功能 github源码路径 https github com dangwei 90 Design Mode
  • Oracle insert all 详解

    文章目录 1 概述 2 insert 的两种形式 2 1 insert first 2 2 insert all 3 数据一致性 同时插入 3 1 验证 insert into 数据不一致 3 2 验证 insert all 数据一致 1
  • Clang Static Analyzer 系列(一)编译 Clang 及运行 Checker

    编译 Clang CSA Clang Static Analyzer 是 clang 的一部分 建议使用自行编译的 clang 源码在 llvm llvm project github com 上获取 编译 clang 前首先要生成 cla
  • [CCPC 2019] 厦门

    Description Recently Zayin became obsessed with a tower defense game called Arknights The most special level is the 5th
  • Spring Cloud Alibaba+saas企业架构技术选型+架构全景业务图 + 架构典型部署方案

    基于Spring Cloud Alibaba 分布式微服务高并发数据平台化 中台 思想 多租户saas设计的企业开发架构 支持源码二次开发 支持其他业务系统集成 集中式应用权限管理 支持拓展其他任意子项目 一 架构技术选型 核心框架 Spr
  • SpringBoot不自动加载Shiro配置 (No bean of type 'org.apache.shiro.realm.Realm' found)

    在很多SpringBoot项目中 common或者parent 做了shiro依赖 这样其他模块项目 总是提示 No bean of type org apache shiro realm Realm found Action Please
  • Docker Windows 版本拉取镜像错误 no matching manifest

    windows 10 x64安装版本需要开启Hyper V Docker镜像拉取错误码 C Users Administrator gt docker pull mysql 5 7 5 7 Pulling from library mysq
  • 如何友好提示vue3.0不再支持IE11及以下的浏览器版本

    原因 2021年4 月 3 日 Vue 作者尤雨溪宣布 Vue 3 将不会支持 IE11 之所以不支持 IE 11 主要原因还是因为 IE 已逐渐边缘化 据 StatCounter 数据显示 在全球市场中 IE 的市场份额只有 0 73 写
  • Java连接数据库的方法

    一 前期准备工作 1 在IDEA中新建一个项目 方式一 然后一路点击 next 最后执行以下步骤 方式二 同样也是一路 next 然后进行以下步骤 2 在所建的项目中建一个 lib 文件 方式 选中 项目 右击新建 lib 3 将相关的驱动
  • WebService代码

    http git oschina net huangyong cxf demo
  • Python打包命令

    创建虚拟环境 conda create n auto python 3 8 激活虚拟环境 conda activate conda activate auto 查看已经创建的虚拟环境列表 conda info envs 查看已经安装的依赖库
  • python实现字符串去重

    题目 输入一串数据 删除重复的数据 注意 读取字符串的顺序为从右往左 如果结果是以0结束 则删除0 如果结果有负号 需要保留 去重思路 对于不含符号的字符串 2343 gt 转化绑定 index value 的元组列表 0 2 1 3 2
  • [网络通信] 什么是零拷贝?

    什么是零拷贝 文章目录 什么是零拷贝 1 Java 实现应用缓存零拷贝 2 底层零拷贝实现机制 2 1 mmap 2 2 sendfile 2 3 splice 小结 REFERENCES 我们在写一个服务端程序时 Web Server或者
  • 从键盘输入n名学生数据,转存到磁盘文件,然后回显

    最近一个同学要我跟她写这个程序 我自己写的不咋地 权当看看得了 include
  • 【计算机视觉

    文章目录 一 检测相关 18篇 1 1 LaRS A Diverse Panoptic Maritime Obstacle Detection Dataset and Benchmark 1 2 Far3D Expanding the Ho
  • C++中使用初始化列表出现原因

    1 必须这样做 如果我们有一个类成员 它本身是一个类或者是一个结构 而且这个成员它只有一个带参数的构造函数 而没有默认构造函数 这时要对这个类成员进行初始化 就必须调用这个类成员的带参数的构造函数 如果没有初始化列表 那么他将无法完成第一步