码迷,mamicode.com
首页 >  
搜索关键字:右值    ( 438个结果
完美转发
完美转发(perfect forwarding)问题是指函数模板在向其他函数传递参数时该如何保留该参数的左右值属性的问题。也就是说函数模板在向其他函数传递自身形参时,如果相应实参是左值,它就应该被转发为左值;同样如果相应实参是右值,它就应该被转发为右值。 这样做是为了保留在其他函数针对转发而来的参数 ...
分类:其他好文   时间:2018-08-05 14:19:22    阅读次数:155
强制转换为右值
在C++11中,标准库在<utility>中提供了一个有用的函数std::move,这个函数的名字具有迷惑性,因为实际上std::move并不能移动任何东西,它唯一的功能是将一个左值强制转化为右值引用,继而我们可以通过右值引用使用该值,以用于移动语义。从实现上讲,std::move基本等同于一个类型 ...
分类:其他好文   时间:2018-08-05 14:18:42    阅读次数:308
三目运算符
三目运算符( a < b ? a : b ) c语言中的三目运算符返回的是变量值 不能作为左值使用 c++中三目运算符可直接返回变量本身 即可作为右值,也可作为左值使用 注意: 三目运算符可能返回值的值如果有一个值是常量值,则不能作为左值使用 总结: 当三目运算符的可能返回都是变量时,返回的是变量的 ...
分类:其他好文   时间:2018-07-29 19:01:33    阅读次数:138
C++之++运算符重载问题
记录++之前先记一下左右值和存取数据的问题 数据的存放分三个部分,堆区,栈区和静态变量区 左值可以更改,右值不能更改 栈区和堆区存储的都是左值,可以随意更改其值,静态变量区部分数据是右值,比如const修饰的值,函数创建的临时变量,都不可更改 前缀++重载,直接直接++操作,返回本身即可 后缀++重 ...
分类:编程语言   时间:2018-07-28 00:15:52    阅读次数:158
移动构造和移动赋值与std::move
移动构造 传统的深拷贝深赋值 对于类中,含有指针的情况,要自实现其拷贝构造和拷贝赋值。也就是所谓的深拷贝和深赋值。我想这己经成为一种共识了。比如如下类: 上面的过程,我们己经知晓,ret 作为右值引用,引用了临时对象,由于临时对象是待返回对象的复本,所以表面上看起来是,待返回对象的作用域扩展了,生命 ...
分类:移动开发   时间:2018-07-20 18:59:48    阅读次数:346
C++11之右值引用与移动构造
右值引用 右值定义: 通俗来讲,赋值号左边的就是左值,赋值号右边的就是右值。可以取地址是左值,不可以取地址的是右值。C++11,之前没有明确提出右值的概念,所以 C++11 以前这些说活都是正确的。 C++11 中的左值,仍然等同于 C++98 左值。C++11 中的右值,除了 C++98 中的右值 ...
分类:移动开发   时间:2018-07-15 14:53:40    阅读次数:214
C++标准库之右值引用相关:引用折叠
引用折叠 引用折叠出现的情况在于范型编程时。 void f(T&& param); f(10); int x = 10; f(x); 这两者都可运行成功。 由于存在T&&这种未定的引用类型,当它作为参数时,有可能被一个左值引用或右值引用的参数初始化,这是经过类型推导的T&&类型,相比右值引用(&&) ...
分类:编程语言   时间:2018-07-03 23:42:39    阅读次数:150
完美转发(perfect forwarding)、universal reference
首先要分清: C++里的值只有两种值:左值、右值。—— 其本质应该是内存中存储的值/instance分两种:一种是持久的,一种是“短暂的” 也只有两种引用: 左值引用、右值引用。 ——引用,就是这个内存地址的助记符(别名)。 1. 左值引用 需绑定、也只能绑定 左值。 同理,右值引用 需绑定、也只能 ...
分类:其他好文   时间:2018-07-02 20:21:17    阅读次数:187
数组的本质分析
数组是相同类型的变量的有序集合 数组在一片连续的内存空间中存储元素 数组元素的个数可以显示或隐式指定 int a[5] = {1,2}; int b[] = {1,2}; 数组名代表数组首元素的地址 数组的地址需要取地址符&才能得到 数组首元素的地址与数组的地址值相同 数组首元素的地址与数组的地址是 ...
分类:编程语言   时间:2018-06-27 00:49:59    阅读次数:186
c++11 右值引用和移动语义
什么是左值、右值 最常见的误解:等号左边的就是左值,等号右边的就是右值左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象右值是指表达式结束时就不再存在的临时对象区分:能对表达式进行取地址,则为左值 否则为右值 为什么引入右值引用?std::vector<String> v;v.p ...
分类:移动开发   时间:2018-06-26 00:41:45    阅读次数:236
438条   上一页 1 ... 10 11 12 13 14 ... 44 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!