深入理解C++11:C++11新特性解析与应用

C++11有很多新特性,标准分为核心语言部分和库部分,库部分在书中没有讲,书名是《深入理解C++11:C++11新特性解析与应用》

实际上库部分在讲语言的时候一定会涉及,下面是列出的所有新特性,比较重要常用的我用红线标出

上面是中英文对照,下面是根据C++的使用者对这些特性的区分,重点是所有人和类作者比较关注的特性,也是使用最多的特性

上面提到书里主要讲的是核心语言部分,而下面很重要的库部分多多少少都会用到,需要额外学习

第2章 保证稳定性和兼容性

2.1 保持与C99兼容

C++有一个很重要的特点就是兼容C,而C++第一个标准C++98却早于C99,且C++03没有完全兼容C99,因此有以下特性在C++11中得到补充:

2.1.1 预定义宏

2.1.2 __func__预定义标识符

这个预定义标识符的作用就是存所在函数的名字:

VisualAssistX2022破解下载 VAX番茄助手Visual Assist X 10.9.2488 for VS2022 汉化破解版(附key+方法) 64位 下载-脚本之家

 这里破解了一下VS。。。没有括号补全太难受了

2.1.3 _Pragma操作符

和#pragma预处理指令功能相同,由于它是操作符,所以可以用在宏里


2.2 long long整型

可以看到long long在我的64位机器上占8字节=64位

2.3 扩展整型

时常会见到右边这种扩展类型,实际上还是标准类型,只不过是别名(VS环境中stdint.h)

2.4 宏__cplusplus

解决Visual Studio设置C++标准 但是_cplusplus始终为199711-CSDN博客

VS对这个宏有特殊处理,所以在我的C++20标准中还是199711的值

理论上C++11中这个宏的值为201103L

2.5 静态断言

2.5.1 运行时与预处理时 

运行时断言就是assert宏,迫使条件不为真时程序退出

预处理断言为#error,见得较少

2.5.2 静态断言与static_assert

static_assert为编译期断言,如果有不符合逻辑的地方程序将无法编译通过

2.6 noexcept

声明函数不会抛出异常,替代了之前的throw(),如果noexcept函数抛出了异常,程序会直接终止,调用std::terminate()而不是捕获异常这种带来额外开销的东西

常量表达式的结果被认为是bool,如果bool值为true则函数不会抛出异常

我的理解应该是异常不是一个高效的程序错误处理机制,不然不会想尽办法减少异常的产生与扩散

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

+xiaowenhao+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值