C++初始化成员列表

1.介绍:

初始化成员列表是 C++ 中的一种构造函数语法,允许在对象构造时直接初始化类的成员变量,而不是先默认初始化再赋值

2.用法:

ClassName(参数列表) : 成员1(参数1), 成员2(参数2), ... {// 构造函数体
}

(1)冒号 : 后面是初始化成员列表。
(2)每个成员用括号 () 或大括号 {} 直接初始化。
(3)成员的初始化顺序与类中声明的顺序一致,而不是在初始化列表中书写的顺序。

例如:

class MyClass {int x;int y;
public:MyClass() : y(2), x(1) {}  // x 会先被初始化,然后 y 初始化
};

3. 作用

(1)初始化列表可以直接构造成员变量,避免了默认构造和赋值的两步操作,减少了性能开销;对于简单的内置类型(如 int、double),区别不大;但对于复杂类型(如自定义类或 STL 容器),效率提升明显。
(2)const 和引用成员变量只能通过初始化列表进行初始化,不能在构造函数体内赋值。

例如:

class MyClass {const int value;    // 常量int& ref;           // 引用
public:MyClass(int v, int& r) : value(v), ref(r) {}  // 必须用初始化列表
};

4. 区别

初始化成员列表&构造函数体内赋值

特性初始化成员列表构造函数体内赋值
效率更高,因为直接初始化较低,可能有额外的默认构造和赋值
支持 const 或引用支持不支持
适用性更推荐,特别是有复杂类型成员时可用于简单类型,但不建议

初始化成员列表

class MyClass {
private:int x;std::string name;public:// 构造函数使用成员初始化列表MyClass(int val, const std::string& str) : x(val), name(str) {// 构造函数体内通常没有做任何操作}
};

构造函数体内赋值

class MyClass {
private:int x;std::string name;public:// 构造函数使用构造函数体内赋值MyClass(int val, const std::string& str) {// 构造函数体内赋值x = val;name = str;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django一分钟:django中收集关联对象关联数据的方法

场景:我有一个模型,被其它多个模型关联,我配置了CASCADE级联删除,我想要告知用户删除该实例之后,哪些关联数据将会被一同删除。 假设我们当前有这样一组模型: class Warehouse(models.Model):""…

统计班级中的说谎者(字节青训)

题目 班里有 N 个学生&#xff0c;第 i 个学生的分数是 A_i。当且仅当分数 < A_i 的学生数量多于分数比他高的数量时&#xff0c;第 i 个学生会说谎。求出有多少学生会说谎。 输入格式 输入 N 学生的成绩&#xff0c;包含 A_1, A_2, ..., A_N 输出格式 对于每组数据&am…

卷积神经网络各层介绍

目录 1 卷积层 2 BN层 3 激活层 3.1 ReLU&#xff08;Rectified Linear Unit&#xff09; 3.2 sigmoid 3.3 tanh&#xff08;双曲正切&#xff09; 3.4 Softmax 4 池化层 5 全连接层 6 模型例子 1 卷积层 卷积是使用一个卷积核&#xff08;滤波器&#xff09;对矩阵进…

【工控】线扫相机小结 第四篇

背景 这一片主要是对第三篇继续补充。话说上一篇讲到了两种模式的切换&#xff0c;上一篇还遗留了一个Bug&#xff0c;在这一篇里进行订正&#xff01; 代码回顾 /// <summary>/// 其实就是打开触发/// </summary>void SetLineSacanWorkMode(){-----首先设置为帧…

MySql面试题.运维面试题之五

《(全国)MySQL数据库DBA测试题-第1套》 卷面总分 题号 单选题 多选题 判断题 100 题分 42 40 18 得分 一、单选题(每题3分,共计42分;得分____) 1. 二进制rpm包安装的mysql数据库,默认的数据文件存放在如下哪个目录里? A、/usr/local/mysql B、/tmp/ C、/var/lib/my…

AI 大模型重塑软件开发的未来

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【软考】系统架构设计师-计算机系统基础(4):计算机网络

计算机网络功能&#xff1a;数据通信、资源共享、管理集中化、分布式处理、负载均衡 5G高峰速率&#xff1a;10Gbit/s 广域网&#xff08;因特网&#xff09;/城域网/局域网&#xff08;以太网&#xff09; 总线型&#xff1a;利用率低&#xff0c;易冲突&#xff0c;干扰大…

Ultiverse 和web3新玩法?AI和GameFi的结合是怎样

Gamef 和 AI 是我们这个周期十分看好两大赛道之一&#xff0c;(Gamef 拥有极强的破圈效应&#xff0c;引领 Web2 用户进军 Web3 最佳利器。AI是这个周期最热门赛道&#xff0c;无论 Web2的 OpenAl&#xff0c;还是 Web3&#xff0c;都成为话题热议焦点。那么结合 GamefiA1双叙事…

Matlab多输入单输出之倾斜手写数字识别

本文主要介绍使用matlab构建多输入单输出的网络架构&#xff0c;来实现倾斜的手写数字识别&#xff0c;使用concatenationLayer来拼接特征&#xff0c;实现网络输入多个特征。 1.加载训练数据 加载数据&#xff1a;手写数字的图像、真实数字标签和数字顺时针旋转的角度。 lo…

R | 统一栅格数据的坐标系、分辨率和行列号

各位同学&#xff0c;在做相关性等分析时&#xff0c;经常会遇到各栅格数据间的行列号不统一等问题&#xff0c;下面的代码能直接解决这类麻烦。以某个栅格数据的坐标系、分辨率和行列号为准&#xff0c;统一文件夹内所有栅格并输出到新的文件夹。 代码只需要更改输入输出和ti…

分布式缓存 + 数据存储 + 消息队列知识体系

文章目录 1. 分布式缓存的原理和技术2. 数据存储3. 数据的备份、恢复、迁移4. 项目案例分析5. 消息队列的原理和技术6. 消息队列的高级特性7. 项目案例分析 1. 分布式缓存的原理和技术 分布式缓存&#xff1a;分布式缓存是一种将数据存储在网络中的多个节点上的技术&#xff0c…

Nginx配置多前端,页面刷新404

nginx配置前端页面使用如下 location / {root /usr/share/nginx/html/zhtj;index index.html index.htm;} 但是这种页面刷新时候会显示404&#xff0c;解决办法如下 location / {root /usr/share/nginx/html/zhtj;index index.html index.htm;try_files $uri $uri/ /ind…

UE5 第一人称射击项目学习(完结)

这个项目几乎完结了。 也算我上手的第一个纯蓝图小项目。 现在只剩下缝缝补补了。 之前把子弹设计为蓝图&#xff0c;这里要引入C的面向对象思想&#xff0c;建立成员函数。 首先双击打开子弹的蓝图 这边就可以构造成员函数 写一个print your name 在这里生成成员函数后&am…

【前端知识】简单讲讲什么是微前端

微前端介绍 一、定义二、背景三、核心思想四、基本要素五、核心价值六、实现方式七、应用场景八、挑战与解决方案 什么是single-spa一、核心特点二、核心原理三、应用加载流程四、最佳实践五、优缺点六、应用场景 什么是 qiankun一、概述二、特点与优势三、核心功能四、使用场景…

三相正弦交流电的相序:揭秘正相序与反相序的奥秘

在电力系统中&#xff0c;三相正弦交流电的应用无处不在&#xff0c;从家庭用电到大型工业设备&#xff0c;都离不开它的稳定供电。然而&#xff0c;在三相交流电中&#xff0c;有一个概念常常让初学者感到困惑&#xff0c;那就是“相序”。今天&#xff0c;我们就来深入探讨一…

力扣面试题 - 24 插入

题目&#xff1a; 给定两个整型数字 N 与 M&#xff0c;以及表示比特位置的 i 与 j&#xff08;i < j&#xff0c;且从 0 位开始计算&#xff09;。 编写一种方法&#xff0c;使 M 对应的二进制数字插入 N 对应的二进制数字的第 i ~ j 位区域&#xff0c;不足之处用 0 补齐…

C07.L07.STL之映射.应用2.统计数字

题目描述 某次科研调查时得到了 n 个自然数&#xff0c;每个数均不超过 1500000000 (1.5*10^9 )。已知不相同的数不超过 10000 个&#xff0c;现在需要统计这些自然数各自出现的次数&#xff0c;并按照自然数从小到大的顺序输出统计结果。 输入格式 包含 2 行&#xff1a; 第…

华为云容器监控平台

首先搜索CCE,点击云容器引擎CCE 有不同的测试&#xff0c;生产&#xff0c;正式环境 工作负载--直接查询服务名看监控 数据库都是走的一个 Redis的查看

Spring Cloud Stream实现数据流处理

1.什么是Spring Cloud Stream&#xff1f; 我看很多回答都是“为了屏蔽消息队列的差异&#xff0c;使我们在使用消息队列的时候能够用统一的一套API&#xff0c;无需关心具体的消息队列实现”。 这样理解是有些不全面的&#xff0c;Spring Cloud Stream的核心是Stream&#xf…

Notepad++--在开头快速添加行号

原文网址&#xff1a;Notepad--在开头快速添加行号_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Notepad怎样在开头快速添加行号。 需求 原文件 想要的效果 方法 1.添加点号 Alt鼠标左键&#xff0c;从首行选中首列下拉&#xff0c;选中需要添加序号的所有行的首列&#xff…