- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 Item26 Avoid overloading on universal references
这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 在正式进入本文主题之前先来看一段代码,这段代码的目的是纪录下当前的日期和时间,并纪录一下名字到全局的数据结构中,代码如下:std::multiset<std::string> names;void logAndAdd(const
2016-12-27 22:44:49 1276
原创 Item25 Use std::move on rvalue reference, std::forward on universal references
这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 右值引用只能绑定到那些可以移动的对象上,如果你有一个右值引用的参数,你应该知道这个参数是用来接收可以移动的对象的。而一个通用引用既可以绑定到一个右值,也可以绑定到一个左值。然后std::forward则可以根据传入的值的类型进行有
2016-12-27 19:44:28 1394 1
原创 都是静态函数惹的祸
关于静态函数我相信大家一定不会陌生,在项目中多多少少也会去使用,静态函数的典型应用场景莫过于限制函数的作用域只在本文件中,在我见过的项目中通常开发人员会把一些辅助函数放在头文件中,然后直接包含到项目中,如果不用static修饰会导致函数重定义(这其实很不规范,偷懒的把文件的声明和定义都放到了头文件中,正规的做法应该是声明放在头文件中,定义放在实现文件中)。// static.h#ifnde
2016-12-26 19:26:01 988
原创 Item24 Distinguish universal references from rvalues reference
这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 刚接触C++11的移动语义的时候,认为T&&就是右值引用,在随后阅读文献的时候发现了另外一个名字,通用引用(universal references),起初认为这两者是同一个东西,直到今天才知道两者不是一个东西,只是形式上相同而已
2016-12-14 22:15:24 963
原创 Item23 Understand std::move and std::forward
这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 std::move和std::forward并不像它们的名字那样有用,这两个仅仅是一个模版函数,是在C++11中引入的,辅助移动语义的,std::move并不是真正的移动了数据,而std::forward也不是真正的进行了转发。为
2016-12-06 00:22:09 1312
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人