转载至: http://www.dutor.net/index.php/2013/11/rvalue-reference-move-semantics-and-perfect-forwarding/ C++11 引入的新特性中,除了并发内存模型和相关设施,这些高帅富之外,最引人入胜且接地气的特性.....
分类:
移动开发 时间:
2015-07-21 21:59:56
阅读次数:
139
右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和精确传递 (Perfect Forwarding)。它的主要目的有两个方面:消除两个对象交互时不必要的对象拷贝,节...
分类:
编程语言 时间:
2015-07-14 20:23:48
阅读次数:
183
新类型:
int和int&是什么?都是类型。int是整数类型,int&则是整数引用类型。同样int&&也是一个类型。两个引号&&是C++ 11提出的一个新的引用类型。记住,这是一个新的类型。默念10次吧。如果你记住这个新类型,那么很多疑问都能迎刃而解。并且对《Effective Modern C++》说到的void
f(Widget&& w),就很容易明白w是新类型的一...
分类:
编程语言 时间:
2015-07-07 00:57:17
阅读次数:
228
just read it
smart_ptr: https://mbevin.wordpress.com/2012/11/18/smart-pointers/
move: https://mbevin.wordpress.com/2012/11/20/move-semantics/...
分类:
编程语言 时间:
2015-06-26 13:03:36
阅读次数:
237
int?*a?=?&1;?//1为右值?不可取址
?const?int?&&aa?=?1;//?右值引用,
?
?//注意??考虑到安全因素,具名变量即使被声明为右值类型也不会被当作右值?而要用std::move函数...
分类:
其他好文 时间:
2015-06-06 23:49:46
阅读次数:
283
1.首先区分左值和右值 左值是表达式结束后依然存在的持久对象 右值是表达式结束时就不再存在的临时对象 便捷方法:对表达式取地址,如果能,则为左值,否则为右值举例: int a = 10 int b = 20 int *pFlag = &a vector vctTemp vctTemp.push_b....
分类:
编程语言 时间:
2015-05-12 20:51:59
阅读次数:
135
我们定义了一个可以传入右值引用的构造函数的类B,在使用std::move的时候,我们非常容易犯一个错误。看下面的代码:class B{public: B() :s(10), ptr(new int[s]) { std::cout << "default constructor...
分类:
编程语言 时间:
2015-05-02 21:58:54
阅读次数:
149
新版的C++标准库出现了很多C++11的新特性,刚开始接触确实很费劲,特别是右值引用和move函数这种基于效率的考虑损失了语言的简单直接的特性,废话不多说,先看右值引用。C++中根据const和non_const,lvalue和rvalue可分为四类对象 non_const const...
分类:
编程语言 时间:
2015-05-02 18:07:09
阅读次数:
128
l 利用{}进行所有容器和数据结构的就地初始化,还可以直接用于返回值,对自定义类型进行就地初始化使用initializer_list
l 通过右值引用,函数可以自由的返回大对象,同时带资源赋值更加高效,由此指针可在任何情况下退出使用(库除外)
l 全局唯一资源可封装为只可移动不可拷贝语义
l 任何非引用数据都可以成为联合体的成员
l final、override、virtual等...
分类:
编程语言 时间:
2015-04-24 12:38:50
阅读次数:
121