C++学习笔记之初始化列表
📅 2026/7/13 4:43:20
👁️ 次浏览
创建一个类对象时编译器通过调用构造函数给类对象中各个成员变量赋初值12345678910111213141516classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19){_year year;_month month;_day day;}private:int_year;int_month;int_day;};但上述赋初值不能称作类对象成员的初始化因为构造函数体内可以多次赋值1234567891011121314151617classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19){_year year;_month month;_day day;_year 2023;//构造函数体内允许对成员变量进行多次赋值}private:int_year;int_month;int_day;};而初始化列表能只能初始化一次。一、用初始化列表初始化对象1.初始化列表用法初始化列表以一个冒号开始接着是一个以逗号分隔的数据成员列表每个成员变量后面跟一个放在括 号中的初始值或表达式。123456789101112131415classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19):_year(year)//初始化列表初始化,_month(month),_day(day){}private:int_year;int_month;int_day;};2.初始化列表特性1初始化列表能只能初始化一次多次初始化会报错12345678910111213141516classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19):_year(year),_month(month),_day(day),_month(month)//初始化列表多次初始化{}private:int_year;int_month;int_day;};编译器也允许构造函数赋初值和初始化列表初始化混用12345678910111213141516classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19):_year(year)//两者混用,_month(month){_day day;}private:int_year;int_month;int_day;};混用时初始化列表初始化和构造函数赋初值不冲突1234567891011121314151617classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19): _year(year)//两者不冲突, _month(month){_day day;_year 2023;}private:int_year;int_month;int_day;};但混用时初始化列表初始化还是要遵循只能初始化一次成员变量的原则1234567891011121314151617classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19): _year(year)//初始化列表初始化, _month(month), _year(2023)//_year在初始化列表里被初始化了两次不允许{_day day;}private:int_year;int_month;int_day;};2const成员变量、引用成员变量、没有默认构造函数的自定义类型成员只能在初始化列表初始化。①const成员变量必须在定义的时候初始化1234567891011121314151617181920classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19): _year(year), _month(month), _n(2)//const成员变量必须使用初始化列表进行初始化{_day day;//_n 2; //const成员变量不能在函数体内初始化}private:int_year;int_month;int_day;constint_n 1;};②引用成员变量必须在定义的时候初始化1234567891011121314151617181920classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19): _year(year), _month(month),_ref(year)//引用成员变量要在初始化列表初始化{_day day;//_ref year; //引用成员变量不能在函数体内初始化}private:int_year;int_month;int_day;int _ref;};③没有默认构造函数的自定义类型成员变量1234567891011121314151617181920212223242526272829303132333435363738394041#include iostreamusingnamespacestd;classA{public://默认构造函数是不用传参就可以调用的构造函数有3种//1.无参默认构造函数//2.带参全缺省的默认构造函数//3.我们不写编译器自动生成的默认构造函数A(intx)//不属于以上任何一种所以A类的对象没有默认构造函数{cout A(int x) endl;_x x;}private:int_x;};classDate{public://构造函数Date(intyear 2022,intmonth 4,intday 19): _year(year), _month(month), _a(20)//没有默认构造函数的自定义类型成员变量必须在初始化列表进行初始化{_day day;}private:int_year;int_month;int_day;A _a;};const成员变量、引用成员变量、没有默认构造函数的自定义类型成员变量必须在初始化列表内初始化的原因①初始化列表是对象的成员变量定义的地方。②对象的内置类型成员变量在初始化列表定义时没有要求必须初始化因此既可以在初始化列表进行初始化也可以在构造函数体内初始化。③而const成员变量、引用成员变量、没有默认构造函数的自定义类型成员变量不能先定义再初始化它们在初始化列表内定义并且必须在定义时就初始化因此必须在初始化列表内初始化。3 尽量使用初始化列表初始化因为不管是否使用初始化列表虽然对于内置类型没有差别但是对于自定义类型成员变量一定会先使用初始化列表初始化。为什么会先使用初始化列表初始化如下Date类没有默认构造函数因为26行的构造函数不属于默认构造函数中的任意一种在对Date类的对象d进行初始化时会调用Date类的默认构造函数所以对象d的day实参12和hour实参12都没有被传进去_t作为Date类的自定义类型成员变量会调用Time类的默认构造函数_hour默认传参为0因此打印_hour的值也为0
1. 项目概述:为什么一个“复位处理程序”值得单独写一篇深度实操笔记?在嵌入式开发的日常里,“Reset Handler”这个词听起来像教科书里的一个固定名词,甚至有人觉得它不过是启动代码里几行汇编跳转指令,改都不用改——…
📅 2026/7/13 4:43:20
戴尔G15散热控制中心:告别臃肿原厂软件的开源解决方案 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15
厌倦了Dell原厂AWCC软件的资源消耗和性能问题…
📅 2026/7/13 4:43:20
CellPose:基于深度学习的通用细胞分割算法技术深度解析 【免费下载链接】cellpose a generalist algorithm for cellular segmentation with human-in-the-loop capabilities 项目地址: https://gitcode.com/gh_mirrors/ce/cellpose
在生物医学图像分析领域&…
📅 2026/7/13 4:42:20
很多人第一次碰 OpenClaw 的时候,心态都崩了。看着满屏的报错日志,脑子嗡嗡响。特别是当你试图重新配置openclaw命令的时候,那种挫败感简直爆棚。官方文档写得那叫一个优雅,好像你只需要敲几行代码,世界就和平了。但现实是,你的环境可能早就乱了。依赖冲突、路径错误、权…
📅 2026/7/13 5:54:23
去年我做过一个特别有意思的项目,要用一个7B的小模型,去复刻一个70B大模型的代码生成效果。一开始我以为蒸馏很简单,不就是让大模型生成一堆样本,然后喂给小模型学吗?结果跑了两周,出来的小模型写代码还是漏…
📅 2026/7/13 5:54:46
说实话,刚入行做模型优化那会,我也犯过很多人都犯的错——一遇到推理慢、显存爆的问题,第一反应就是加显卡、升算力,觉得只要硬件到位了,所有问题都能迎刃而解。直到去年帮朋友的小团队做项目,他们手里只有…
📅 2026/7/13 5:54:46
终极自动化直播录制方案:StreamCap一键搞定40平台内容采集 【免费下载链接】StreamCap Multi-Platform Live Stream Automatic Recording Tool | 多平台直播流自动录制客户端 基于FFmpeg 支持监控/定时/转码 项目地址: https://gitcode.com/gh_mirrors/st/Strea…
📅 2026/7/13 5:54:46
海口开公司、开商铺、家里数码设备出问题,很多人习惯网上搜教程自己折腾,或者网购便宜设备凑合用,结果折腾半天没解决、买来的设备也不耐用。其实海口本地就有一家全品类数码服务商——海口怡恒康科技有限公司,实体门店、同城上门…
📅 2026/7/13 5:54:46
NS模拟器终极管理方案:如何用开源工具让Switch游戏配置变得简单高效 【免费下载链接】ns-emu-tools 一个用于安装/更新 NS 模拟器的工具 项目地址: https://gitcode.com/gh_mirrors/ns/ns-emu-tools
你是否曾经为了安装一个NS模拟器而花费数小时查找教程、下…
📅 2026/7/13 5:54:46
做技术的人都知道,环境配置是最让人头秃的环节。特别是当你面对一个相对小众或者刚起步的项目时,文档可能不全,社区可能冷清。这时候,找到靠谱的来源就显得尤为重要。今天咱们不聊虚的,就聊聊怎么稳妥地完成 openclaw安装官方 流程,顺便分享几个我踩过的坑,希望能帮你省…
📅 2026/7/13 0:01:22
1. 项目概述:当火焰特效成为帧率杀手在UE5项目里,尤其是那些追求电影级视觉的开放世界或者大场景战斗游戏,一个熊熊燃烧的篝火、一次震撼的爆炸,往往是点燃玩家情绪的关键。Niagara作为虚幻引擎5中取代了老旧的Cascade的下一代粒子…
📅 2026/7/13 0:01:52
1. 项目概述与核心价值 最近在对接抖音小游戏平台时,侧边栏复访功能成了一个绕不开的“必答题”。很多开发者朋友,包括我自己一开始,都对这个功能有点摸不着头脑:它到底是什么?为什么平台这么重视?不接入行…
📅 2026/7/13 0:01:52
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/13 5:30:27
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/12 0:00:28
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/12 0:00:28
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/13 3:29:47
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/12 15:39:57
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/12 8:07:36