0%

本文包含《Effective Modern C++》中第7、8两章内容,《Effective Modern C++》个人读书笔记此篇完结。

第七章 并发API

条款35: 优先考虑基于任务而非基于线程的程序设计

c++11标准中带来了std::thread和std::future,两个类型都是作为并发内容加入到11标准中的,thread是以往线程概念的类型封装,future是c++标准为了应对异步操作而做的新的概念封装,例如一个future对象可以通过std::async建立:

阅读全文 »

本文包含《Effective Modern C++》中第6章内容的个人笔记,包含lambda表达式在C++11/14标准中的使用问题。

第六章 lambda表达式

条款31: 避免默认捕获模式

“捕获只能针对于在创建lambda式的作用域内可见的非静态局部变量(包括行參)”在书写lambda式的捕获语句时需要牢记这句话。
按默认捕获形式[]、[=]、[&]书写代码的情况容易使人忽略局部变量生存期的事实,从而导致指针空悬,也容易误导人使人们认为lambda是自洽的,所以应当显式声明lambda捕获的变量。

阅读全文 »

本文包含《Effective Modern C++》中第5章内容的个人笔记,讨论C++11标准中引入的右值引用相关问题。

第5章 右值引用、移动语义和完美转发

条款23: 理解std::move和std::forward

move只是将实参强制转换为右值,其行为大致为:

阅读全文 »

本文包含《Effective Modern C++》中第4章内容的个人笔记,讨论现代C++中智能指针使用问题。

第4章 智能指针

c++11标准增加了新版的智能指针unique_ptr、shared_ptr、weak_ptr,同时废弃了旧标准中的auto_ptr,本章着重介绍的就是这些新增智能指针需要注意的地方。

阅读全文 »

本文包含《Effective Modern C++》中第3章内容的个人笔记,讨论现代c++新增语法使用。

第3章 转向现代C++

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

C++11标准中增加了统一初始化,亦即使用大括号进行初始化。这种初始化方式可以防止隐式窄化型别转换,即如果需要执行窄化,则无法通过编译,该方式亦可避免形如

阅读全文 »