0. 前言
c++默认赋值构造函数的返回值是引用类型,c++赋值运算符=的本意是返回左值的引用,我们重写赋值构造函数的时候,返回值是否应该设为引用类型呢?
按照《Effective C++》中第10条,最好是设为引用类型。 本文,通过实验来表述返回值是否为引用类型的区别。1. 内置类型 int...
分类:
编程语言 时间:
2014-07-22 23:08:15
阅读次数:
400
最近学到了关于verilog的阻塞赋值与非阻塞赋值的一些区别,经过网上查阅与仿真实验,有了一些理解。希望能够记下来。说到verilog的阻塞与非阻塞赋值,不得不说的就是verilog的事件表,如下:阻塞赋值,属于活跃事件,计算完RHS(Right Hand Side)立即更新左值。期间同一块内其他语...
分类:
其他好文 时间:
2014-07-06 17:13:25
阅读次数:
243
在C++中,左值(lvalue)是可以获取其地址的一个量。由于经常出现在赋值语句的左边,因此称之为左值。例如一个有名称的变量。 例如:
int a=10;
//a就是一个左值。
传统的C++引用,都是左值引用。例如:int &ra=a;将ra关联到a。这就是左值引用。
C++11,新增了右值引用的概念。用&&代表右值引用。
首先我们来看一下什么叫做右值。可以...
分类:
编程语言 时间:
2014-06-26 13:12:12
阅读次数:
207
今天Mayuyu带大家一起来搞清楚i++与++i的区别。或许你在C++编程中经常使用它们,但是却不知道它们背后的原
理。同样Mayuyu也不知道,那么今天很有必要搞清楚它们。现在就让Mayuyu带领大家一起学习吧。。。
首先,说到i++于++i的区别,那么就先要了解它们的底层实现细节。下面是它们的实现代码
对于i++是
int tmp;
tmp = i;
i =...
分类:
其他好文 时间:
2014-06-08 15:32:30
阅读次数:
181
在标准C语言中, i++和 ++i的区别显而易见。 但是,当在for循环中使用 i++和
++i的时候,会发现。只要这两种语句不用来赋值操作(作为右值,赋值给左值),那么这两种写法其实是一样的。for中其实不管是i++或++i都是在for循环体全部执行完毕后才执行,如:for(inti=0;i...
分类:
其他好文 时间:
2014-06-06 22:01:21
阅读次数:
271
为什么赋值运算符要返回引用??因为赋值操作会改变左值,而 +
之类的运算符不会改变操作数,所以说赋值运算符重载要返回引用以用于类似 (a=b)=c 这样的再次对a=b进行写操作的表达式。+ 返回一个临时对象是合情合理的
,你若返回引用大多数情况下也不会出错或导致某个操作数被意外修改,但这就使(a+b...
分类:
编程语言 时间:
2014-06-02 08:57:00
阅读次数:
382
被调函数的返回类型决定返回的是左值还是右值,当被调函数的返回类型是 引用 时,返回的是左值,其余情况下返回的是右值,被调函数返回的左值有着与其他左值类型同样的运算特性,需要特别指出的是, 我们能为返回类型是非常量引用的函数的结果赋值 ,但是需要注意的是,进行运算的前提是确保返回的引用是有效的, 返回与局部对象绑定的引用是无效的 ,因为被调函数运行结束时,局部对象的存储空间已经释放,返回与局部对象绑...
分类:
其他好文 时间:
2014-05-26 05:54:15
阅读次数:
225
对于&限定的函数,我们只能将它用于左值;对于&&限定的函数,只能用于右值;如下:Foo &retFoo();
//返回一个引用;retFoo 调用是一个左值Foo retVal(); //返回一个值;retVal 调用是一个右值Foo i,j; //
i和j是左值i=...
分类:
其他好文 时间:
2014-05-22 15:38:41
阅读次数:
374
一 C++中表达式的分类
传统C++的变量表达式分为左值和右值。通俗来讲,两者有着如下区别:
1.从生命周期上来看:左值就是非临时对象,那些可以在多条语句中使用的对象。所有的变量都满足这个定义,在多条代码中都可以使用,都是左值。右值是指临时的对象,它们只在当前的语句中有效;
2.左值是有名字的(通过其他具名对象间接得到的,例如通过返回引用的函数,或通过指针解引用(* 运算符)),有固定的存放...
分类:
编程语言 时间:
2014-05-22 08:43:44
阅读次数:
428
表达式
1,应该把函数调用当作是一种运算符,这种运算符对参与运算的对象没有数量限制。
2,关于“左值(lvalue)”和“右值(rvalue)”可以做一个简单的归纳:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。
更具体的左值与右值的举例:C++ priemr 5ed P121
3,运算符的优先级规定了运算对...
分类:
编程语言 时间:
2014-04-30 22:17:39
阅读次数:
355