首页 > 编程语言 >C++11 笔记

C++11 笔记

时间:2023-03-29 11:11:48浏览次数:688  
标签:11 初始化 auto 左值 笔记 C++ 移动 构造函数

1、 可以利用C++11 friend 友元新特性 创建可靠的测试版本。

 

2、移动语义  移动构造函数  ----   https://blog.csdn.net/u011852872/article/details/127076918

 

当类中同时包含拷贝构造函数和移动构造函数时,如果使用临时对象初始化当前类的对象,编译器会优先调用移动构造函数来完成此操作。只有当类中没有合适的移动构造函数时,编译器才会退而求其次,调用拷贝构造函数。
实际开发中,通常在类中自定义移动构造函数的同时,会再为其自定义一个适当的拷贝构造函数。当用户利用右值初始化类对象时,会调用移动构造函数;使用左值(非右值)初始化类对象时,会调用拷贝构造函数

使用左值,调用移动构造函数初始化对象
默认情况下,左值初始化同类对象只能通过拷贝构造函数完成,如果想调用移动构造函数,则必须使用右值进行初始化

C++11 标准中为了满足用户使用左值初始化同类对象时也通过移动构造函数完成的需求,新引入了 std::move() 函数,它可以将左值强制转换成对应的右值,由此便可以使用移动构造函数

 

 

左值、纯右值、将亡值

 

3、初始化列表    - 3.5.2  P96

   ---可以防止类型收窄 

 

4、 auto 推导

   

     auto 不能推导的情况:

  1、 对于函数fun来说,auto不能是其形参类型。可能读者感觉对于fun来说,由于其有默认参数,所以应该推导fumn形参x的类型为int型。但事实却无法符合大家的想象。因为auto是不能做形参的类型的。如果程序员需要泛型的参数,还是需要求助于模板。

 2、 对于结构体来说,非静态成员变量的类型不能是auto的。同样的,由于var定义了初始值,读者可能认为auto0可以推导st 成员 var 的类型为int的。但编译器阻止:auto对结构体中的非静态成员进行推导,即使成员拥有初始值。

 3、声明auto数组。我们可以看到,main中的x是一个数组,y的类型是可以推导的而声明 autoz[3]这样的数组且同样会被编译器禁止。

 4、在实例化模板的时候使用auto作为模板参数,如main 中我们声明的vector<cauto> V。

 

5、 decltype 

 

 6、基于范围的for 循环

 

 

7、强类型枚举

 

 

 

8、原子类型和原子操作    并行编程、多线程C++11

  

 

   内存模型 顺序一致性 与memory_order 相关概念:

 

 

 

 

 

 

9、默认函数的控制

   

 

 

10、 lambda 

   

 

 

 

 

 

标签:11,初始化,auto,左值,笔记,C++,移动,构造函数
From: https://www.cnblogs.com/mengqy/p/17268178.html

相关文章

  • iOS PCMAudio 与 g711a/g711u 的互转码
    iOSG711编码G.711是一种由国际电信联盟(ITU-T)制定的音频编码方式,又称为ITU-TG.711。它是国际电信联盟ITU-T定制出来的一套语音压缩标准,它代表了对数PCM(logarithmicp......
  • mybatis学习笔记
    1、第一个mybatis导入依赖//mysql依赖<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.31</v......
  • 苹果吐槽:平板和笔记本合体如同烤箱和冰箱杂交
    “你可以将烤箱和冰箱合二为一,但是这很有可能会引起消费者的反感。”苹果CEO库克在财务报告会上开门见山对笔记本和平板的合体发表吐槽。由于Windows8操作系统对于不同的设......
  • C++编程语言中赋值运算符重载函数(operator=)介绍
    参考资料:C++编程语言中赋值运算符重载函数(operator=)介绍_operator==_liitdar的博客-CSDN博客本文主要介绍C++编程语言中赋值运算符重载函数(operator=)的相关知识,同时通......
  • Effective C++笔记
    EffectiveC++ThirdEdition改善程序与设计的55个具体做法导读除非有理由允许构造函数被用于隐式类型转换,否则‘我’会把它声明为explicit(阻止隐式类型转换)classtmp{......
  • 人月神话读书笔记
    第1章:焦油坑大型系统开发就像一个焦油坑,很多强壮的动物都在其中挣扎。如果将一个“程序”提升为“产品”(意味着:通用化、测试、文档、维护)需要3倍的时间;如果将一个“程......
  • 人月神话读书笔记2
        在刚刚进入软件工程学习时,老师总会时不时向我们提起一些关于“软件项目开发的完成与增加人员的问题”这句话听起来通俗易懂,但实现起来却遇到了相当大的困难,这是......
  • 软考高 信息系统项目管理笔记1
    十大管理:人:进度管理成本管理范围管理事:沟通管理资源管理干系人管理人/事:质量管理采购管理风险管理五大过程:启动、计划、执行、监督、收尾#PDCA:......
  • PMP考点笔记
    引论项目项目的特点级作用:独特行、临时性项目的启动背景:满足倒金字塔型条件项目相关方管理项目预算三大指标在指定时间点:计划价值PV:计划要完成的工作量挣值......
  • L2-001-紧急救援*C++(使用Dijkstra算法附带全详细注释)
     L2-001紧急救援分数 25 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每......