news 2026/4/16 19:51:22

C++笔记-C++11(一)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++笔记-C++11(一)

1.C++11的发展历史

C++11 是 C++ 的第⼆个主要版本,并且是从 C++98 起的最重要更新。它引⼊了⼤量更改,标准化了既有实践,并改进了对 C++ 程序员可⽤的抽象。在它最终由 ISO 在 2011 年 8 ⽉ 12 ⽇采纳前,⼈们曾使⽤名称“C++0x”,因为它曾被期待在 2010 年之前发布。C++03 与 C++11 期间花了 8 年时间,故⽽这是迄今为⽌最⻓的版本间隔。从那时起,C++ 有规律地每 3 年更新⼀次。

2.列表初始化

2.1C++98传统的{}

C++98中的一般数组和结构体可以用{}进行初始化,而在C++11中对{}进行了延伸。

2.2C++11中的{}

1.C++11以后想统⼀初始化⽅式,试图实现⼀切对象皆可⽤{}初始化,{}初始化也叫做列表初始化。

2.内置类型⽀持,⾃定义类型也⽀持,⾃定义类型本质是类型转换,中间会产⽣临时对象,最后优化了以后变成直接构造。

3.{}初始化的过程中,可以省略掉=

4.C++11列表初始化的本意是想实现⼀个⼤统⼀的初始化⽅式,其次他在有些场景下带来的不少便

利,如容器push/inset多参数构造的对象时,{}初始化会很⽅便。

这就是C++11中对内置类型的支持,不过我们在日常使用中也不怎么这样用,这种了解一下即可。

主要是对自定义类型的支持有很大的改变:

这里我们创建一个Date类,此时我们就可以用第二张图的方式进行初始化。

这里本质是{2025,1,1}构造了一个Date的临时对象,临时对象又通过拷贝构造赋值给d1,但是我们之前也讲过,这里编译器会优化为直接构造:

可以看出并没有调用拷贝构造函数,只调用了构造函数。

像这种d2引用的就是{2024,7,25}产生的临时对象,这里加上const也是因为引用本身可以被修改,而临时对象具有常性,不能被修改,所以加上const就可以使引用的权限被缩小,变得不能被修改。

这里还需要注意的是在C++98中支持单参数的隐式类型转换,并且可以不加{}。

=符号在C++11中也是可以省略的,这种就看个人习惯了,但是必须要有{}的情况下才可以省略=符号。

像这种没有{},程序就会报错。

相较于有名对象和匿名对象传参,{}传参更有性价比。

2.3C++11中的initializer_list

上面的初始化已经很方便,但是初始化参数的数量取决于你定义的成员变量的个数,简单来说有数量限制,所以对于容器初始化还是不太方便, ⽐如⼀个vector对象,我想⽤N个 值去构造初始化,那么我们得实现很多个构造函数才能⽀持, vector<int> v1 = {1,2,3};vector<int> v2 = {1,2,3,4,5};

这样写起来就太麻烦了,故 C++11库中提出了⼀个std::initializer_list的类, auto il = { 10, 20, 30 }; // the type of il is an initializer_list ,这个类的本质是底层开⼀个数组,将数据拷⻉ 过来,std::initializer_list内部有两个指针分别指向数组的开始和结束。

通过调试我们可以看出 initializer_list中有两个指针_First和_Last来指向数组的开始和结束。

容器⽀持⼀个std::initializer_list的构造函数,也就⽀持任意多个值构成的 {x1,x2,x3...} 进⾏

初始化。STL中的容器⽀持任意多个值构成的 {x1,x2,x3...} 进⾏初始化,就是通过std::initializer_list的构造函数⽀持的。

并且 initializer_list是支持迭代器访问的,我们通过打印出迭代器的地址和栈上数据地址的比较可以看出,initializer_list所开辟的数组是在栈上的。

这里拿vector容器来演示,就可以通过 initializer_list来进行初始化,不过v1和v2在写法语义是不太一样的,v1是直接构造,v2是构造临时对象+临时对象拷贝复制v2,但是这步操作会被编译器优化为直接构造,这点大家要弄清楚。

而v3引用加const依旧是权限的问题,这里就不过多赘述了。

3.右值引用和移动语义

C++98的C++语法中就有引⽤的语法,⽽C++11中新增了右值引⽤语法特性,C++11之后我们之前学习的引⽤就叫做左值引⽤。⽆论左值引⽤还是右值引⽤,都是给对象取别名。

而在学习右值引用之前我们先认识一下左值和右值。

3.1左值和右值

左值 是⼀个表⽰数据的表达式(如变量名或解引⽤的指针),⼀般是有持久状态,存储在内存中,我

们可以获取它的地址,左值可以出现赋值符号的左边,也可以出现在赋值符号右边。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。

https://www.dongchedi.com/article/7600833157193253401
https://www.dongchedi.com/article/7600834099257016856
https://www.dongchedi.com/article/7600832447063999000
https://www.dongchedi.com/article/7600832867085713945
https://www.dongchedi.com/article/7600831262563598873
https://www.dongchedi.com/article/7600831402183311897
https://www.dongchedi.com/article/7600832061917905470
https://www.dongchedi.com/article/7600832733291594264
https://www.dongchedi.com/article/7600831880816132632
https://www.dongchedi.com/article/7600831372500140568
https://www.dongchedi.com/article/7600830983973110297
https://www.dongchedi.com/article/7600830989874577944
https://www.dongchedi.com/article/7600829992859484697
https://www.dongchedi.com/article/7600831200579633688
https://www.dongchedi.com/article/7600828893398254104
https://www.dongchedi.com/article/7600829947162739225
https://www.dongchedi.com/article/7600830440379204158
https://www.dongchedi.com/article/7600830705475813950
https://www.dongchedi.com/article/7600829156548837913
https://www.dongchedi.com/article/7600828482650194457
https://www.dongchedi.com/article/7600829257937584702
https://www.dongchedi.com/article/7600829728349684248
https://www.dongchedi.com/article/7600828048296083993
https://www.dongchedi.com/article/7600829419913511486
https://www.dongchedi.com/article/7600826526896112152
https://www.dongchedi.com/article/7600825958186648089
https://www.dongchedi.com/article/7600826072481055257
https://www.dongchedi.com/article/7600826004273431065
https://www.dongchedi.com/article/7600826285178536472
https://www.dongchedi.com/article/7600825958186418713
https://www.dongchedi.com/article/7600825908014252569
https://www.dongchedi.com/article/7600826379294704190
https://www.dongchedi.com/article/7600826004273267225
https://www.dongchedi.com/article/7600826379294573118
https://www.dongchedi.com/article/7600825908014154265
https://www.dongchedi.com/article/7600825816129765913
https://www.dongchedi.com/article/7600826257907466814
https://www.dongchedi.com/article/7600825708680135193
https://www.dongchedi.com/article/7600826257907270206
https://www.dongchedi.com/article/7600825908013924889
https://www.dongchedi.com/article/7600825653575303705
https://www.dongchedi.com/article/7600763089105469977
https://www.dongchedi.com/article/7600825816129471001
https://www.dongchedi.com/article/7600825816129339929
https://www.dongchedi.com/article/7600761478211224089
https://www.dongchedi.com/article/7600826159441904190
https://www.dongchedi.com/article/7600763029579743806
https://www.dongchedi.com/article/7600763312351101465
https://www.dongchedi.com/article/7600755747886334488
https://www.dongchedi.com/article/7600758147854549566
https://www.dongchedi.com/article/7600825603486876185
https://www.dongchedi.com/article/7600711725914014233
https://www.dongchedi.com/article/7600708729394217534
https://www.dongchedi.com/article/7600825816129569305

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:44:42

Qwen3-Reranker-0.6B部署案例:金融风控报告自动摘要系统中的重排模块集成

Qwen3-Reranker-0.6B部署案例&#xff1a;金融风控报告自动摘要系统中的重排模块集成 在金融风控场景中&#xff0c;每天产生的尽调报告、贷后检查记录、舆情分析简报动辄数百页。传统摘要系统常面临一个关键瓶颈&#xff1a;初筛阶段召回的候选段落质量参差不齐&#xff0c;靠…

作者头像 李华
网站建设 2026/4/16 16:44:30

Open-AutoGLM依赖安装报错?pip常见问题解决方案

Open-AutoGLM依赖安装报错&#xff1f;pip常见问题解决方案 在部署智谱开源的手机端AI Agent框架Open-AutoGLM时&#xff0c;很多新手朋友卡在了第一步&#xff1a;pip install -r requirements.txt 这一行。明明只是装个依赖&#xff0c;却冒出一堆红色报错——编译失败、找不…

作者头像 李华
网站建设 2026/4/16 15:07:30

3小时精通法律AI:ChatLaw全流程实战攻略

3小时精通法律AI&#xff1a;ChatLaw全流程实战攻略 【免费下载链接】ChatLaw 中文法律大模型 项目地址: https://gitcode.com/gh_mirrors/ch/ChatLaw 副标题&#xff1a;面向开发者的零门槛部署指南 法律AI正在改变传统法律服务模式&#xff0c;但如何从技术角度实现一…

作者头像 李华
网站建设 2026/4/16 15:07:08

Clawdbot实操:Qwen3:32B代理平台支持的WebSocket长连接与流式响应

Clawdbot实操&#xff1a;Qwen3:32B代理平台支持的WebSocket长连接与流式响应 1. 什么是Clawdbot&#xff1a;一个面向开发者的AI代理网关平台 Clawdbot不是另一个大模型聊天界面&#xff0c;而是一个真正为工程落地设计的AI代理网关与管理平台。它不替代模型本身&#xff0c…

作者头像 李华
网站建设 2026/4/16 9:23:32

MedGemma 1.5实战教程:对接FHIR标准电子病历实现结构化问诊与推理联动

MedGemma 1.5实战教程&#xff1a;对接FHIR标准电子病历实现结构化问诊与推理联动 1. 为什么你需要一个本地化的医疗AI助手&#xff1f; 你有没有遇到过这样的场景&#xff1a;一位基层医生在接诊时&#xff0c;手头只有患者零散填写的纸质主诉和几项异常检验单&#xff0c;却…

作者头像 李华