前不久facebook在github上发布了一个c++工具库folly,其中的实现大量的使用了c++ 11的新特性,同时,gcc 从4.3版本开始支持c++ 11, 到现在的版本4.8,已经支持了绝大部分c++ 11的新特性(support list),让我感到时候有必要认真学习一下c++ 11 ...
紧接上一篇译文,这一篇对move语义的来龙去脉有非常详尽的回答 原文 ,篇幅较长,如果你能读完,相信你不会再问任何关于move语义的问题了。 译文 我的第一个回答是对move语义的一个极其简单的介绍,故意略过了很多细节。但是move语义确实还有很多需要解释的,我想这是我给出第二个回答来填坑的时候了。第一个回答已经很久了,我觉得完全把它替换掉有点不太合适,作为一篇介绍,它依然挺好。如果你想更深入,请 ...
2013-01-22 14:27 22 11006 推荐指数:
前不久facebook在github上发布了一个c++工具库folly,其中的实现大量的使用了c++ 11的新特性,同时,gcc 从4.3版本开始支持c++ 11, 到现在的版本4.8,已经支持了绝大部分c++ 11的新特性(support list),让我感到时候有必要认真学习一下c++ 11 ...
上一篇译文中,我们了解到C++中的Aggregates和POD类型,那么在C++ 11中这些定义会有怎样的改变呢,什么是trivial和standard-layout类型呢?相信在这篇译文中,可以找到你想要的答案 ...
C++ 11标准中统一了初始化语法,在了解这些变化之前,我们有必要对Aggregate类型和POD类型有所了解,看到stack overflow上有篇不错的文章(原文),对Aggregate、POD和C++ 11中的变化有详尽的解释,感觉非常不错,先翻译前半部分,后半部分过两天再给出。 ------------------------------------------------------- ...
C++0x中加入了右值引用,和move函数。右值引用出现之前我们只能用const引用来关联临时对象(右值)(造孽的VS可以用非const引用关联临时对象,请忽略VS),所以我们不能修临时对象的内容,右值引用的出现就让我们可以取得临时对象的控制权,终于可以修改临时对象了!而且书上说配合move函数 ...
前几天转载一篇quora上的文章,但是英文的,我还是觉得有必要将这篇文章翻译一下,希望更多的人能够看到 C++是一门复杂的语言 成为专业级c++程序员的路线: 步骤0:理解c++语言 必须去读Stroustrup的《The C++ Programming Language ...
折叠 完美转发 std::forward 参考 C++11出现的右值相关语法 ...
目录 可拷贝和可移动的概念 移动构造函数和移动赋值函数 小结移动构造和移动赋值 std::move() 使用 std::move 实现一个高效的 swap 函数 Move ...
为什么要用移动语义 先看看下面的代码 以上代码拷贝构造函数会被调用两次,一次是从GetTemp函数中有HugeMem()生成的一个临时值用作返回值,另外一次则由临时值构造出main中的变量a。析构函数调用了三次。这个过程如果指针指向非常大的内存时拷贝构造 的代价相当昂贵 ...