Item36 Specify std::launch::async if asynchronicity is essential

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 当你调用std::async执行一个函数或者是可调用对象的时候,你通常会试图让这个函数异步的执行,但是std::async并不是必须要这样做。只有通过给std::async指定运行的策略为异步的情况下函数才能确保一定是异步执行的...
阅读(422) 评论(0)

Item35 Prefer task-based programming to thread-based

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ C++11第一次将并发引入到了语言和标准库中,这使得C++程序员们终于可以直接写跨平台的多线程程序了,不用再自己去写不同平台的线程封装了。C++11在引入线程相关的API的同时也引入了一些并发编程的高级组件例如tasks、fut...
阅读(271) 评论(0)

Item34 Prefer lambdas to std::bind

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ C++11中的std::bind是对C++98中的std::bind1st 和std::bind2nd的改进和继承。而std::bind是在2005年的时候 作为标准库的一部分,起初是放在TR1规范中,拥有自己独立的命名空间st...
阅读(342) 评论(0)

Item33 Use decltype on auto&& parameters to std::forward them

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 在C++14中最令人激动的特性当属通用lambda了,通用lambda指的就是使用auto来作为lambda的参数。实现通用lambda也是很方便的,我们知道lambda本质上是一个仿函数,也就是实现了operator()操作...
阅读(171) 评论(0)

C++ Dos and Don'ts

最小化头文件 不要包含不必要的头文件尽量使用前向声明的方式,目的是为了减少编译时间What are forward declarations in C++?,并且在头文件发生改变的时候,减少重新编译的文件。 将内部类移动到实现中 // 内部类的声明 class Whatever { public: /* ... */ private: struct DataStruct; std::...
阅读(241) 评论(0)

Item32 Use Init capture to move objects into closures

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 一些时候Lambda的值拷贝和引用两张捕获模式都没有办法满足你的需要,比如当你有一个可移动的对象,你希望可以将这个对象移动到闭包中,因为值拷贝的效率不高,引用捕获的话会导致生命周期的问题。很可惜C++11并没有提供将对象移动到闭包...
阅读(200) 评论(0)

Item31 Avoid default capture modes

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ C++11中Lambda表达式给C++带来了很大的改变,通过Lambda可以很方便的创建一个函数对象,这对于C++的开发来说影响是巨大的,比如可以很方便的结合STL的一些算法,不用再单独创建函数来用,还有可以很好的结合std::u...
阅读(179) 评论(0)

Item30 Familiarize yourself with perfect forwarding failure cases

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 在C++11中最为显著的一个新特性,当属完美转发了,是的它很完美,和它的名字一样,转发两字意味着一个函数将其参数传递给另外一个函数,第二个函数的目标则是接收来自于第一个函数传递过来的对象,转发二字体现出第二个函数接收到的对象应该和...
阅读(171) 评论(0)

Item29 Assume that move operations are not present,not cheap,and not used

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 在C++11新增的特性中,移动语义毫无疑问是最为重要的特性,有了这个特性后,对于STL容器的移动操作变的和拷贝一个指针一样高效。它允许编译器将那么昂亏的拷贝操作替换成高效的移动操作,将你的代码重新用C++11编译一遍后,你会发现你...
阅读(208) 评论(0)

Item28 Understand reference collapsing

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 在Item23中详细的介绍了std::move和std::forward的实现原理,并给出了std::move一种典型实现,但是在介绍std::forward的时候,我承认我偷懒了,我只是简单的提到std::forward类似st...
阅读(602) 评论(0)

Item27 Familiarize yourself with alternatives to overloading on universal references

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 在Item26中对通用引用进行重载的时候会导致各种各样的问题进行了详细的描述,但是这些重载在某些场合下的确很有用,比如构造函数的重载。导致这种问题出现的原因主要是因为重载函数的类型匹配规则(最佳匹配,模版总是能实例化出最m...
阅读(494) 评论(0)

Item26 Avoid overloading on universal references

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 在正式进入本文主题之前先来看一段代码,这段代码的目的是纪录下当前的日期和时间,并纪录一下名字到全局的数据结构中,代码如下:std::multiset names; void logAndAdd(const...
阅读(518) 评论(0)

Item25 Use std::move on rvalue reference, std::forward on universal references

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 右值引用只能绑定到那些可以移动的对象上,如果你有一个右值引用的参数,你应该知道这个参数是用来接收可以移动的对象的。而一个通用引用既可以绑定到一个右值,也可以绑定到一个左值。然后std::forward则可以根据传入的值的类型进行有...
阅读(457) 评论(0)

都是静态函数惹的祸

​ 关于静态函数我相信大家一定不会陌生,在项目中多多少少也会去使用,静态函数的典型应用场景莫过于限制函数的作用域只在本文件中,在我见过的项目中通常开发人员会把一些辅助函数放在头文件中,然后直接包含到项目中,如果不用static修饰会导致函数重定义(这其实很不规范,偷懒的把文件的声明和定义都放到了头文件中,正规的做法应该是声明放在头文件中,定义放在实现文件中)。// static.h #ifnde...
阅读(237) 评论(0)

Item24 Distinguish universal references from rvalues reference

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 刚接触C++11的移动语义的时候,认为T&&就是右值引用,在随后阅读文献的时候发现了另外一个名字,通用引用(universal references),起初认为这两者是同一个东西,直到今天才知道两者不是一个东西,只是形式上相同而已...
阅读(265) 评论(0)
112条 共8页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:78151次
    • 积分:1875
    • 等级:
    • 排名:千里之外
    • 原创:110篇
    • 转载:0篇
    • 译文:1篇
    • 评论:21条
    博客专栏
    最新评论