编程语言
首页 > 编程语言> > 《Effective Modern C++》概览

《Effective Modern C++》概览

作者:互联网

第一章 类型推导

1. 理解模板类型推导

2. **理解auto类型推导

3. **理解decltype

4. 学会查看类型推导结果

第二章 Auto

5. **优先考虑auto而非显式类型声明

6. **auto推导若非己愿,使用显式类型初始化惯用法

第三章 移步现代C++

7. **区别使用(){}创建对象

8. **优先考虑nullptr而非0NULL

9. 优先考虑别名声明而非 typedefs

10. **优先考虑限域enum而非未限域enum

11. 优先考虑使用deleted函数而非使用未定义的私有声明

12. **使用override声明重写函数

13. **优先考虑const_iterator而非iterator

14. **如果函数不抛出异常请使用noexcept

15. **尽可能的使用constexpr

16. **const成员函数线程安全

17. 理解特殊成员函数的生成

18. **对于独占资源使用std::unique_ptr

19. **对于共享资源使用std::shared_ptr

20. **std::shard_ptr可能悬空时使用std::weak_ptr

21. **优先考虑使用std::make_uniquestd::make_shared而非new

22. 当使用Pimpl惯用法,请在实现文件中定义特殊成员函数

23. **理解std::movestd::forward

24. 区分通用引用与右值引用

25. **对右值引用使用std::move,对通用引用使用std::forward

26. 避免在通用引用上重载

27. 熟悉通用引用重载的替代方法

28. 理解引用折叠

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

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

在大多数情况下,完美转发工作的很好。你基本不用考虑其他问题。但是当其不工作时——当看起来合理的代码无法编译,或者更糟的是,虽能编译但无法按照预期运行时——了解完美转发的缺陷就很重要了。同样重要的是如何解决它们。在大多数情况下,都很简单。

第四章 ***lambda*表达式

31. 避免使用默认捕获模式

32. 使用初始化捕获来移动对象到闭包中

33. **auto&&形参使用decltypestd::forward它们

34. 考虑lambda而非std::bind

第五章 并发API

35. 优先考虑基于任务的编程而非基于线程的编程

36. **如果有异步的必要请指定std::launch::async

37. **使std::thread在所有路径最后都不可结合

38. 关注不同线程句柄的析构行为

39. 对于一次性事件通信考虑使用voidfutures

40. **对于并发使用std::atomic,对于特殊内存使用volatile

第六章 微调

41. 对于移动成本低且总是被拷贝的可拷贝形参,考虑按值传递

42. 考虑使用置入代替插入

闲聊

囫囵吞枣式的看完了Modern C++,前面看的比较仔细,对应类型推导、智能指针、右值引用、通用引用以及一些好记的技巧等有了认识,对于Lambda、并发Api等有了点印象。
清楚了自己的不足,开发时不能停留在表明,每一步都有可能是坑。对自己不足的地方,后面会再系统的学习一次。并总结输出。特别是一些常用的知识。

标签:std,函数,Effective,Modern,C++,推导,引用,使用,类型
来源: https://www.cnblogs.com/cloudflow/p/16157985.html