Modern Effective C++

1.型别推导

1.1 ParamType是个指针或引用,但不是万能引用

 

 

 1.2 ParamType是个万能引用

 1.3 ParamType既非指针也非引用

1.4  数组实参

A.按值形参

 

 

 B.按引用传递形参

 

 1.5 函数实参

2. auto型别推导

 

 

 

 3.decltype

 

 

 

 

 

 4.掌握查看型别推导结果的方法

 5.auto

6. 当auto推导的型别不符合要求时,使用带显示型别的初始化物习惯用法

7. 在创建对象时注意区分()和{}

 

 

 

 

 8.优先选用nullptr,而非0或NULL

 

 

 

9. 优先选用别名声明,而非typedef

 

 

 

 

 

10.优先选用限定作用域的枚举类别,而非不限作用域的枚举型别

 

 

 

 

 

11.优先选用删除函数,而非 private未定义函数

 

 

 

 

 

 

 12.为意在改写的函数添加override声明

 

 

 13.优先选用const_iterator,而非iterator

14.只要函数不会发射异常,就为其加上noexcept声明

 

  

 

 15.只要有可能使用constexpr,就使用它

 

 

 

 

 16.保证const成员函数的线程安全性

 

17.理解特种成员函数的生成机制

 

 18.使用std::unique_ptr管理具备专属所有权的资源

 

 

19.使用std::shared_ptr管理具备共享所有权的资源

 

 

 

 

 

 

 

 

 

 20.对于类似std::shared_ptr但有可能空悬的指针使用std::weak_ptr

 

 

 

 

 21.优先选用std::make_unique和std::make_shared,而非直接使用new

 

 

 

 

 

 

 

 

 

 

22.使用Pimpl习惯用法时,将特殊成员函数的定义放到实现文件中

 

 

 

 

 

 

23.理解std::move和std::forward

 

 

 

相关知识点: 

 

 

 

24.区分万能引用和右值引用

 

 

 

 

 

 25.针对右值引用实施std::move,针对万能引用实施std::forward

 

 26.避免依万能引用型别进行重载

 

 

 

  

 27.熟悉依万能引用型别进行重载的替代方案

标签分派

 

 

 

 

对接受万能引用的模板施加限制

 

 

 

 

 28.理解引用折叠

 

 29.假定移动操作不存在、成本高、未使用

 30.熟悉完美转发的失败情形

 

 

 

 

 

31.避免默认捕获模式

 

 

 32.使用初始化捕获将对象移入闭包

 

 

 

 

 33.对auto&&型别的形参使用decltype,以std::forward之

 34.优先选用lambda式了,而非std::bind

 

35.优先选用基于任务而非基于线程的程序设计

 36.如果异步是必要的,则指定std::launch::async

 

 37.使用std::thread型别对象在所有路径皆不可联结

 

 38.对变化多端的线程句柄析构函数行为保持关注

 

 

 39.考虑针对一次性事件通信使用以void为模板型别实参的期值

40. 对并发使用std::atomic,对特种内存使用volatile

 

41.针对可复制的形参,在移动成本低并且一定会被复制的前提下,考虑将其按值传递

42.考虑置入而非插入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值