auto

自动类型推断,就是编译器能够根据表达式的类型,自动决定变量的类型(从 C++14 开始,还有函数的返回类型)但需要说明的是,auto 并没有改变 C++ 是静态类型语言这一事实——使用 auto 的变量(或函数返回值)的类型仍然是编译时就确定了,只不过编译器能自动帮你填充而已。

for (auto it = v2.begin(), end = v2.end(); it != end; ++it) {}

decltype

decltype 的用途是获得一个表达式的类型,结果可以跟类型一样使用。它有两个基本用法:

  • decltype(变量名) 可以获得变量的精确类型。
  • decltype(表达式) (表达式不是变量名,但包括 decltype((变量名)) 的情况)可以获得表达式的引用类型;除非表达式的结果是个纯右值(prvalue),此时结果仍然是值类型。

如果我们有 int a;,那么:

  • decltype(a) 会获得 int(因为 a 是 int)。
  • decltype((a)) 会获得 int&(因为 a 是 lvalue)。
  • decltype(a + a) 会获得 int(因为 a + a 是 prvalue)。
template<class T1, class T2>
auto sum(T1 t1, T2 t2) -> decltype(t1 + t2) {return t1 + t2;
}// decltypeauto ret = sum(4.6, 123);

类模板的模板参数推导

    auto pr = make_pair(1, 42);

列表初始化

    std::array<int, 3> a{1, 2, 3};std::vector<int> v{1, 2, 3, 4, 5};

类数据成员的默认初始化

  • 如果一个类没有使用初始化列表的构造函数时,初始化该类对象可全部使用统一初始化语法。
  • 如果一个类有使用初始化列表的构造函数时,则只应用在初始化列表构造的情况。
class Complex {
public:Complex() {}Complex(float re) : re_(re) {}Complex(float re, float im) : re_(re), im_(im) {}private:float re_{0};float im_{0};
};

自定义字面量

    cout << "Hello world"s.substr(0, 5) << endl;

二进制字面量 (C++14)

    unsigned mask = 0b111000000;cout << bitset<9>(mask) << endl;

数字分隔符

十进制数字使用三位的分隔,对应英文习惯的 thousand、million 等单位。
十进制数字使用四位的分隔,对应中文习惯的万、亿等单位。
十六进制数字使用两位或四位的分隔,对应字节或双字节。
二进制数字使用三位的分隔,对应文件系统的权限分组。

    long r_earth_equatorial = 6'378'137;double pi = 3.14159'26535'89793;const unsigned magic = 0x44'42'47'4E;

静态断言

    static_assert((alignment & (alignment - 1)) == 0,"Alignment must be power of two");

default 和 delete 成员函数

  • 没有初始化的非静态 const 数据成员和引用类型数据成员会导致默认提供的默认构造函数被删除。
  • 非静态的 const 数据成员和引用类型数据成员会导致默认提供的拷贝构造函数、拷贝赋值函数、移动构造函数和移动赋值函数被删除。
  • 用户如果没有自己提供一个拷贝构造函数(必须形如 Obj(Obj&) 或 Obj(const Obj&);不是模板),编译器会隐式声明一个。
  • 用户如果没有自己提供一个拷贝赋值函数(必须形如 Obj& operator=(Obj&) 或 Obj& operator=(const Obj&);不是模板),编译器会隐式声明一个。
  • 用户如果自己声明了一个移动构造函数或移动赋值函数,则默认提供的拷贝构造函数和拷贝赋值函数被删除。
  • 用户如果没有自己声明拷贝构造函数、拷贝赋值函数、移动赋值函数和析构函数,编译器会隐式声明一个移动构造函数。
  • 用户如果没有自己声明拷贝构造函数、拷贝赋值函数、移动构造函数和析构函数,编译器会隐式声明一个移动赋值函数。

override 和 final 说明符

  • 给开发人员更明确的提示,这个函数覆写了基类的成员函数;
  • 让编译器进行额外的检查,防止程序员由于拼写错误或代码改动没有让基类和派生类中的成员函数名称完全一致。

C++ 11 后一些便捷用法相关推荐

  1. C++11 condition_variable条件变量用法

    C++11 condition_variable条件变量用法 1 什么是条件变量 2 condition_variable类定义 2.1 wait函数 3 condition_variable用法 3 ...

  2. 解决更新到os x10.11后openssl头文件无法找到的问题

    os x从10.10更新到10.11后,原有代码编译报错,#include <openssl/ssl.h>等头文件无法找到: "openssl/ssl.h: No such fi ...

  3. 升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法

    升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法 升级10.11后,运行pod命令出现: -bash: pod: command not f ...

  4. gns3 1.3.9升级到gns3 1.3.11后,升级gns3 iouvm解决版本不匹配问题

    gns3 1.3.9升级到gns3 1.3.11后,gns3 iouvm也需要升级到1.3.11版本才能使用. 升级方法: 1.为gns3 iouvm虚拟机添加一块NAT网卡 2.进入gns3 iou ...

  5. 双11后,翘首盼快递物流素材模板,先来看看各快递公司的海报吧!

    双十一快递物流的方式表现了是多么迅速,宣传其"极速达"配送服务. 双11后你最想见到的人是谁?我问了100个人,100个人的答案都是:快递员小哥!一天能查800遍物流信息,昨天下的 ...

  6. 升级OS X 10.11后CocoaPods的安装(问题与解决方法)

    OS X更新到10.11后,CocoaPods的安装和以前有了点不同. 以前安装cocoapods的时候用的是这句: $ sudo gem install cocoapods 现在要改成这句: $ s ...

  7. 小米手机系统更新完无服务器,小米手机升级MIUI 11后出现卡顿?设置这几个功能,手机重回流畅...

    原标题:小米手机升级MIUI 11后出现卡顿?设置这几个功能,手机重回流畅 关于小米手机升级MIUI 11后,部分用户出现卡顿的现象,不知道大家有没有对卡顿的现象,那么针对MIUI 11的卡顿,小编就 ...

  8. C++/C++11中std::string用法汇总

    C++/C++11中std::string是个模板类,它是一个标准库.使用string类型必须首先包含<string>头文件.作为标准库的一部分,string定义在命名空间std中. st ...

  9. C++11后的常用容器和迭代器

    文章目录 一.string容器 二.vector容器 三.list容器 1.构造函数 2.特性操作 3.元素操作 4.赋值操作 5.交换.反转.排序.归并 6.比较操作 7.插入和删除 四.pair键 ...

最新文章

  1. 深度学习模型压缩与加速综述!
  2. MVC把随机产生的字符串转换为图片
  3. Java异常知识整理_处理异常时的性能开销
  4. 通往自由之路 | 云队友远程办公征文活动
  5. (译)在Objective-c里面使用property教程
  6. php十万篇文章,10万+的标题套路,就这9个
  7. Non-zero CodeForces - 1300A
  8. [NewLife.Net]单机400万长连接压力测试
  9. 数据库实验二 SQL语言
  10. 企业数字化转型以“活力”先行
  11. C++11中的原子操作(atomic operation)
  12. 苹果cms V10模板/MXone Pro自适应影视电影网站模板
  13. node在Fedora 22系统下开发环境搭建
  14. c语言中 结构体对象,C语言中结构体详解
  15. [linux thermal] thermal device tree
  16. Tensorflow2.0---SSD网络原理及代码解析(二)-锚点框的生成
  17. java对接支付宝当面付支付和查询
  18. ncm 汇集 matlab,ncm-solutions 压缩包中的文件主要是基于matlab的数值计算以及分析功能学习的很好的例程 266万源代码下载- www.pudn.com...
  19. Windows消息拦截技术的应用(Hook钩子)
  20. 向量叉积与向量叉积的模的运算

热门文章

  1. SpringBoot框架分层(View层、Controller层、Service层、Mapper层、pojo层)
  2. Html5手机端网址封装成微信小程序的教程
  3. 当经历所有大厂的实习面试过后
  4. rundll32.exe命令使用简介
  5. 【Nexus】安装配置与使用
  6. vue显示日历插件_一个干净轻巧的插件,用于显示属性日历
  7. ajax怎么解决报414,如何解决HTTP 414“请求URI太长”错误?
  8. 怎么看计算机配件型号,笔记本屏幕型号怎么看_笔记本电脑屏幕型号的查看步骤-win7之家...
  9. 仿蘑菇街,蜜芽宝贝,京东商品详情界面,与NestedScroll滑动
  10. PAT Queueing at Bank(字符串处理)