C++完美转发与std::forward

初次遇到std::forward是在阅读std::make_shared源码时看到的,当时不少很能理解为什么这可以达到完美转发的目的。这里来总结一下。 引用折叠std::forward的出现是因为C++11右值语义的出现,而有时候我们需要写下面的代码进行参数的转发。 template<class T> void foo(T&& arg) { ...     阅读全文
vhyz's avatar
vhyz 9月 13, 2018

造shared_ptr轮子时需要注意的几点

最近在写智能指针shared_ptr的实现,本以为是一个比较简单的轮子,但其实内部实现是比较复杂的,总的来说总共有以下几项。 内部数据结构的实现shared_ptr有两个私有成员,一个为指向对象指针,另一个为引用计数块的指针。 我刚开始以为内部只是一个指向对象指针和一个引用计数(比如size_t)的指针,其实内部构造并不是这么简单,智能指针shared_ptr需要满足下面几点。...     阅读全文
vhyz's avatar
vhyz 7月 28, 2018

C++ Primer 第Ⅲ部分笔记——类设计者的工具

对象移动右值引用右值引用区别于普通引用,用两个&表示 返回左值引用的函数,连同赋值、下标、解引用和前置递增递减运算符返回左值 返回非引用的函数,连同算术、关系、位以及后置递增递减运算符都生成右值 我们不能将左值引用绑定到一个右值上,但可以使用const左...     阅读全文
vhyz's avatar
vhyz 8月 29, 2017

C++ Primer 第Ⅱ部分笔记

向算法传递函数向排序算法传递二元谓词定义isSHorter方法 bool isShorter(const int &i,const int& j) { return ...     阅读全文
vhyz's avatar
vhyz 8月 23, 2017

C++Primer 第Ⅰ部分读书笔记

变量与基本类型extern的使用声明而不定义extern in...     阅读全文
vhyz's avatar
vhyz 8月 04, 2017