Effective C++——4.确定对象被使用前已经初始化

2023-05-16

1.为防止有的情况下对象未初始化导致的混乱,最佳的处理办法就是:永远在使用对象之前先将它初始化。对于无任何成员的内置类型,必须手工完成

2.内置类型以外的任何其他东西,初始化责任在构造函数中。规则很简单:确保每一个构造函数都将对象的每一个成员初始化

3.C++规定,对象的成员变量的初始化动作发生在进入构造函数本体之前。在构造函数中就是给成员变量赋值,而不是初始化

4.可以用成员初始化列表对成员变量进行初始化,但因为类成员变量有时候非常多,所以这只是理想情况

5.初始化时是调用变量的构造函数传递值,赋值是调用 = 操作符传递值

6.可以立下一个规则:总是在初值列中列出所有成员变量,以免要记住哪些成员变量不需要初始化,同时可以保证有const和引用变量时正常初始化

7.初始化的顺序最好和变量声明的顺序相同,防止初始化有先后要求的时候不一致

8.编译单元指产出单一目标文件的源码,基本上是单一源码加上包含的头文件

9.C++对定义于不同编译单元的non-local static对象的初始化没有固定顺序,如果要确定顺序,可以将non-local static放到函数内。这些函数返回对象的引用,然后用户调用函数,而不直接干涉对象,这是单例的常用实现方法之一

记住三点:

1.为内置型对象进行手工初始化,因为C++不保证初始化它们

2.构造函数最好使用成员初值列,而不要在构造函数内使用赋值操作。初值列的成员变量,应该和class中的声明次序相同

3.为免除“跨编译单元之初始化次序”问题,用local static对象替换non-local static对象

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Effective C++——4.确定对象被使用前已经初始化 的相关文章

  • 2、SPSS的基本知识

    目录 一 SPSS软件的安装和启动 二 SPSS的基本操作环境 xff08 1 xff09 数据编辑窗口 xff08 主程序窗口 xff09 xff08 2 xff09 SPSS结果输出窗口 三 SPSS软件的退出 四 SPSS软件的三种基
  • STM32F429IGT6移植FreeRTOS时遇到的问题汇总

    一 学习环境 编译环境 xff1a keil 开发板 xff1a 野火STM32F429开发板 二 遇到的问题 问题一 xff1a error This port can only be used when the project opti
  • 一篇搞懂关于计算机的减法运算

    一篇搞懂关于计算机的减法运算 减法相减结果为正的减法相减结果为负数的减法 减法 相减结果为正的减法 如下一篇拙言 xff0c 是自己平时的总结 xff0c 如有错误欢迎各位大佬指正 相信你一定听说过 xff0c 补码 xff0c 取反加一等
  • 使用Dev C++建立工程文件调用不同文件下的c文件

    在学校嵌入式软件小组课上直播翻车 xff0c 很尴尬 xff01 xff01 xff01 xff01 然后我结束以后仔细找了一歘啊错误原来是因为没有主一头文件的包含形式导致的 我先介绍一下C语言包含头文件时 lt gt 和 34 34 区别
  • Java Spring Boot 热部署

    一 IDEA配置 当我们修改了Java类后 xff0c IDEA默认是不自动编译的 xff0c 而spring boot devtools又是监测classpath下的文件发生变化才会重启应用 xff0c 所以需要设置IDEA的自动编译 x
  • 新手上路——树莓派3B+系统安装

    首先拿到树莓派后是万分开心 xff0c 索然我不知道他是个什么 xff0c 能用来干什么 xff0c 不过貌似是个电脑主机 xff0c 所以就上手玩儿了 刚拿到手里然后去树莓派基金会网站 xff08 https www raspberryp
  • 新手上路——树莓派3B+安装cmake

    安装smake有两种方法地一种是自动安装 第二种是手动安装 建议使用手动安装 xff0c 自动安装不一定是你想要的版本 xff0c 现介绍第一种 方案一 xff1a sudo apt install cmake 这样就结束了方便 快捷 方案
  • 新手上路——树莓派3B+安装OpenCV(你想要的版本)

    啊啊啊啊啊 xff01 xff01 安装六七次都没成功的我近乎崩溃 xff0c 这次终于成功了 xff0c 失败了无数次的我好像让人来教我一下啊 xff0c 可惜没有 xff0c 还是自己琢磨薄吧 xff0c 为了帮助到更多的人我写了一下我
  • 舵机控制使用

    本文仅介绍固定180度舵机 MG996R舵机 SG90舵机 MG90S舵机等 引脚功能 xff1a 舵机的转动角度跟输入脉冲有关 xff0c 详细看下表 xff1a 可以发现一个规律 xff1a 角度每次增加45度 xff0c 高电平时间相
  • Python之You-Get库学习

    今天学习一下You Get这个第三方库 xff0c 体验一下视频下载的快乐 简介 You Get库是一个基于Python3的视频下载工具 xff0c 支持多数国内外主流视频站点的视频下载 看一下项目主页的README md 真的是十分的ni
  • CMake编译CUDA项目报错

    CMake编译CUDA项目报错 现象解决方法结果 现象 configure后显示如下错误 CMake Error at C Program Files CMake share cmake 3 26 Modules CMakeDetermin
  • 程序设计思维 week11 作业

    A 题意 蒜头君从现在开始工作 xff0c 年薪 NN 万 他希望在蒜厂附近买一套 6060 平米的房子 xff0c 现在价格是 200200 万 假设房子价格以每年百分之 KK 增长 xff0c 并且蒜头君未来年薪不变 xff0c 且不吃
  • windows->wsl&ubuntu config

    ref https blog csdn net weixin 45883933 article details 106085184 安装前配置 ref 适用于 Linux 的 Windows 子系统安装指南 Windows 10 1 启用
  • 线程阻塞与唤醒

    线程阻塞与唤醒的方法如图 xff1a span class hljs keyword package span newThread span class hljs keyword import span java util Scanner
  • Android的死机、重启问题分析方法

    Android的死机 重启问题分析方法 原文链接 xff1a https blog csdn net jinlu7611 article details 50592385 1 死机现象 1 1 死机定义 当手机长时间无法再被用户控制操作时
  • JAVA小白工具人PHPer

    PHP写多了 xff0c 确实很松散 xff0c 什么都是array xff0c 不像java这么资深 xff0c 个个都是大佬 慢慢学习 1 二维数组取某一列的值 php的写法 array column array 39 id 39 ja
  • 当大恒相机采集帧率没有达到理论帧率时

    当大恒相机采集帧率没有达到理论帧率时 xff0c 可设置最大带宽
  • iOS——UITabBarController

    一 UITabBarController简介 1 UITabBarController 对象可以保存多个 视图控制器 并进行切换 xff0c 并且底部还会有一个 工具栏 xff08 UITabBar xff09 xff0c 工具栏里会有多个
  • nomachine NX 远程连接相关问题

    由于xavier等硬件设备不支持x86指令集 xff0c 因此无法使用诸如teamviewer 向日葵 todesk等远程控制软件 这里我们使用nomachine软件实现远程访问 远程连接分以下两种情况 xff1a 局域网内远程连接和公网远
  • loki部署

    官方最佳示例 xff1a Best practices Grafana Loki documentation helm repo add loki https grafana github io loki charts helm repo

随机推荐

  • C++中的string与char数据类型以及路径字符串拼接以及写txt文件的问题

    作为一个计算机小白 xff0c 最近学习C 43 43 xff0c 这里做一个小记录 xff0c 欢迎各路大神共同交流 分割线 C 43 43 中string与char的区别 xff1a 在C 43 43 中 xff0c 字符串有两种 xf
  • 计蒜客救援问题 java

    救生船从大本营出发 xff0c 营救若干屋顶上的人回到大本营 xff0c 屋顶数目以及每个屋顶的坐标和人数都将由输入决定 xff0c 求出所有人都到达大本营并登陆所用的时间 在直角坐标系的原点是大本营 xff0c 救生船每次从大本营出发 x
  • 在keil中观察STM32产生的PWM 用示波器观察实质频率与仿真不符 是计算值的10倍(疑惑中。。。)

    第一步 xff1a 选择软件仿真 1 配置软件仿真 第二步 xff1a 进入仿真 xff0c 调用logicc analyer 观察波形 1 按仿真按键进入仿真界面 2 打开模拟 示波器 界面 3 设置观察端口 4 开始仿真 全速运行 5
  • 工厂模式——简单工厂、工厂方法、抽象工厂入门及总结

    背景 相信我们很多开发人员 xff0c 在平时的系统开发过程中 xff0c 都或多或少等接触过一些设计模式 比如java程序员必须会接触到的Spring类库 xff0c 它就综合运用了多种设计模式 xff0c 从而使源码更加抽象 xff0c
  • IDEA插件开发-学习

    IDEA插件资料其实挺少的 xff0c 可能我姿势不对 闲暇无事 xff0c 当作练手 这东西挺难调试的 xff0c 官方文档实在看不下去 xff0c 谷歌资料也挺少的 把下面这些东西复制进去可以当调试用了 Project project
  • 树莓派 通过opencv 调用csi摄像头

    树莓派使用csi摄像头 在设置里面打开摄像头 检测摄像头 安装opencv 读取图像测试 socket 网络传图测试 opencv多线程 取图测试 在设置里面打开摄像头 span class token function sudo span
  • Centos7.2下安装Pyspider

    本来一直使用的python3 X的 xff0c 之前一直弄的Python3 6 1 xff0c 不知道为啥 xff0c 搭建了好几次都没有成功 xff0c 不知道是什么地方的问题 xff0c 后面再找一下问题 还有就是在Windows上搭建
  • OFD版式文件的优势

    OFD版式文件的优势 OFD格式是我国自主可控的电子文件版式文档格式 在OFD格式产生之前 xff0c 电子文件存档格式并没有统一的国家或行业标准 xff0c 档案工作中普遍采用DOC WPS PPTX等流式文件格式 内容易更改 转移过程存
  • OFD是什么?

    OFD是什么 xff1f OFD格式文件介绍 OFD xff08 Open Fixed layout Document的简称 xff0c 意为开放版式文档 xff09 xff0c 是按照我国自主研发制定的版式文档格式标准 GB T 3319
  • ofd格式文件转换成pdf格式的方法

    ofd格式文件很多人还比较陌生 xff0c 很多人接收到文件都不知如何打开阅读 xff0c 把文件发给对方 xff0c 还需要对方安装个专门的阅读软件 xff0c 我们还有另一个办法 xff0c 就是将OFD文件转换为PDF格式文件 xff
  • 比较出名的导航类网站

    网址导航是把很多网站集合起来 xff0c 按照一定的条件进行分类的网站 网址导航方便网民快速找到自己需要的网站 xff0c 可以直接到需要的网站 xff0c 而不必记住各个网站的网址 现在的网址导航一般都提供自己常用的查询工具 xff0c
  • 使用NGINX作为HTTPS正向代理服务器

    简介 xff1a NGINX主要设计作为反向代理服务器 xff0c 但随着NGINX的发展 xff0c 它同样能作为正向代理的选项之一 正向代理本身并不复杂 xff0c 而如何代理加密的HTTPS流量是正向代理需要解决的主要问题 本文将介绍
  • 超级小的docker镜像

    超级小的docker镜像 xff0c 通过可用来做基础镜像或者测试使用 拉镜像尽量选择带有apline或slim标签的 xff0c 体积很小 alpine镜像官方地址 xff1a https hub docker com alpine 拉取
  • 16进制转Base64的实现原理及代码

    随着计算机技术的发展 xff0c 数据的存储和传输方式也在不断更新 xff0c 其中十六进制字符串和Base64编码是两种常见的数据表示方式 本文将介绍16进制字符串和Base64编码的原理 xff0c 并提供Java代码实现16进制字符串
  • MySQL错误-this is incompatible with sql_mode=only_full_group_by解决办法

    原因分析 xff1a 一 原理层面 这个错误发生在mysql 5 7 5 版本及以上版本会出现的问题 xff1a mysql 5 7 5版本以上默认的sql配置是 sql mode 61 ONLY FULL GROUP BY xff0c 这
  • pulsar-admin接入项目

    练手项目 第一步 xff1a 添加依赖 lt dependency gt lt groupId gt org apache pulsar lt groupId gt lt artifactId gt pulsar client admin
  • C/C++语言——函数返回临时变量、对象

    函数内部栈上创建的临时变量 临时对象 xff0c 生命周期只在函数运行期间 xff0c 函数运行结束后 xff0c 就会释放对应内存空间 错误的函数写法 int amp test1 int x 61 1 return x 错误的函数写法 i
  • VS2008——调试方法大全

    一 断点调试 总结以下VS2008的调试方法 xff0c 首先最常用的就是使用断点了 xff0c 断点分为两种 xff1a 普通断点 跟踪点 普通断点就是红色圆点 xff0c 跟踪点是红色菱形 可以通过右键设置断点相关内容 xff0c 让断
  • Effective C++——22.将成员变量声明为private

    1 一致性 xff1a 如果public中的每样东西都是函数 xff0c 就不需要思考使用的时候要不要带小括号 2 使用函数可以让成员变量的处理有更精确的控制 3 封装性 xff1a 有时候要根据不同情况修改set和get的实现方式 xff
  • Effective C++——4.确定对象被使用前已经初始化

    1 为防止有的情况下对象未初始化导致的混乱 xff0c 最佳的处理办法就是 xff1a 永远在使用对象之前先将它初始化 对于无任何成员的内置类型 xff0c 必须手工完成 2 内置类型以外的任何其他东西 xff0c 初始化责任在构造函数中