C++11
文章平均质量分 66
整理C++11新特性
Jxiepc
一个努力向上的男同志
展开
-
【C++11新特性】| 并发编程
C++11中提供std::thread创建线程执行线程任务,不再需要使用繁琐的pthread_xxx;它可以阻塞一个线程或者个线程,直到有线程通知或者超时才会唤醒正在阻塞的线程,条件变量需要和锁配合使用;原子操作:多线程中最小的不可并行化的操作,故在多线程下,只有一个线程对其进行操作(不会出现例外);【atomic_flag】:该类型为无锁的,可以用该类型来实现一个自旋锁;当进入到lock的当前作用域时自动上锁,离开当前作用域时自动释放锁;可以动态的释放锁资源,防止线程由于编码失误导致一直持有锁;原创 2023-01-30 09:56:08 · 2658 阅读 · 1 评论 -
【C++11新特性】| 【05】nullptr、deleted、lambda解析
文章目录1、nullptr2、默认函数的控制3、lambda函数3.1 lambda与仿函数3.2 lambad的参数问题3.3 lambda与STL1、nullptr使用指针时,务必需要将其初始化,否则将会是一个悬挂指针;【NULL】:传统的C中NULL被定义为字面量0或者定义为无类型指针(void*);【nullptr】:C++11中,nullptr是一个指针空值类型的常量,指针空类型为nullptr_t,而不是指针; ==> typedef decltype(nullptr) nul原创 2022-05-13 22:40:00 · 476 阅读 · 0 评论 -
【C++新特性】| 【05】提高性能及操作硬件的能力(constexpr、变长模板、原子类型、线程局部存储)
文章目录1、常量表达式1.1 运行时常量1.2 编译时常量边长模板变长函数变长模板参数进阶1、常量表达式1.1 运行时常量使用const关键字描述的都是一些运行时常量性;,即运行时数据不可改变;以下是不通过编译:以下使用到的是编译器常量,故将不可以使用const;1.2 编译时常量C++11提供constexpr关键字,该关键字是编译时期的常量;上述代码中,若将const转换为constexpr将会得到解决;【注意】:- 不能将该关键字作用于virtual成员函数上;- 常量表原创 2022-05-13 20:09:29 · 610 阅读 · 0 评论 -
【C++11新特性】| 【07】兼容性大汇总
文章目录1、C++11与C++03的不兼容2、C++与ISO C不兼容的项目3、C++11弃用特性4、gcc编译选项1、C++11与C++03的不兼容1、C++11支持自定义的字面常量;3、C++11引入了一些新的关键字:alignas、alignof、char16_t、char32_t、constexpr、decltype.noexcept、nullptr.static_ assert和 thread_local;4、C++11引人了C99的新类型long long;5、C++11和C99原创 2022-05-13 00:38:04 · 617 阅读 · 0 评论 -
【C++11新特性】| 【04】auto、decltype类型推导以及for
文章目录1、>的改进2、auto类型推导3、decltype4、基于范围的for循环1、>的改进C++11不需要规避>>连续使用;如:vector<<vector>> vc;2、auto类型推导【静态类型】:类型检查发生在编译阶段;【动态类型】:类型检查发生在运行阶段;C++11后auto不再是一个存储类型指示符,可以再编译器间推导变量的类型(简化代码);当使用auto时,必须立即对其进行定义,否则将会出错;- 能够解决一般的精度问题,例如将原创 2022-05-11 23:03:52 · 261 阅读 · 0 评论 -
【C++11新特性】| 【03】强类型枚举以及垃圾回收机制
文章目录1、强类型枚举2、堆内存管理2.1 垃圾回收方式2.2 C++11与最小垃圾回收支持1、强类型枚举C语言 | 【耗费一夜总结三本C语言系列】之 结构体、联合、枚举枚举一般用来定义一个类别;【匿名枚举】:阔以用于定义数值的名字;- 阔以使用const static代替,带该方式会占用较多的存储空间;【具名枚举】:即有名字的枚举类型,该成员名字是全局可见的;非强类型枚举的缺陷- 1.当两个枚举内的成员相同时,由于该成员是全局的,故在使用时会造成混淆,报错;namespace T {原创 2022-05-11 20:46:39 · 567 阅读 · 0 评论 -
【C++11新特性】| 【02】继承、委派构造、右值引用及其他类型
文章目录1、继承构造函数2、委派构造函数1、继承构造函数当子类要使用基类的构造,需要在构造中显示声明;但若基类中由大量构造,那么将会给代码造成困扰;【using】在C++11中,可以通过using声明来声明继承基类的构造函数;【{}】可以结合上述一起使用,初始化数据成员;【注意】:- 在继承中,参数的默认值是不会被继承的;- 使用继承构造函数,编译器就不会为子类生成默认构造函数;class A {public: A(int i) {} A(double d, int i原创 2022-05-11 09:34:51 · 260 阅读 · 0 评论 -
【C++11新特性】| 【01】保证稳定性和兼容性
文章目录一、简介1、设计目标2、C++11的增强3、新增关键字一、简介1、设计目标- 让C++成为更好的适用于系统开发及库开发的语言;- 让C++成为更易于教学的语言;- - 保证语言的稳定性,以及C++03、C语言的兼容性;2、C++11的增强- 通过内存模型、线程、原子操作等来支持本地并行编程;- 通过统一初始化表达式、auto、declytype、移动语义等支持泛型编程;- 通过constexpr、POD等来支持系统编程;- 通过内联命名空间、继承构造函数和右值引用等来支持库的构原创 2022-05-06 17:20:02 · 493 阅读 · 1 评论 -
C++11 | 新增特性【常用系列】
文章目录一、关键字1.1 alignas1.2 alignof1.3 decltype1.4 auto1.5 static_assert1.6 noexcept1.7 constexpr1.8 thread_local二、预定义宏2.1 `__STDC_HOSTED__`2.2 `__STDC__`2.3 `__STDC__VERSION__`2.4 `__STDC_ISO_10646__`2.5 `__func__`2.6 `_Pragma`2.7 `__VA_ARGS__`三、类相关3.1 final3原创 2022-03-04 14:08:07 · 602 阅读 · 0 评论