首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

什么叫函数的左值?该怎么处理

2012-04-05 
什么叫函数的左值?什么叫函数的左值?[解决办法]其实没有什么理由要在这里较真这些叫法,在C++中,由于引入了

什么叫函数的左值?
什么叫函数的左值?

[解决办法]
其实没有什么理由要在这里较真这些叫法,
在C++中,由于引入了ADT的实现,所以可以在自己定义的数据类型中尽可能模拟内置数据的各种表现行为。

内置数据类型由编译器在编译时对其做出解析,自己定义的数据类型要自己解释其行为,然后编译器根据一些规则来识别这些行为。
C++中要实现一些内置数据类型的行为,如: a = b = c, a = b + c + d,在这里赋值运算符和加法运算符其实都是一些函数,要使得能够这样串联运算,即串联函数调用,就要求能够让函数返回一个“左值”,即能够改变并且记录结果的变量表示,在C++中这就是引用。

至于显式的让一个函数作为左值,或者说将函数放到左边,例如f(x) = 2; 这当然是可行的,因为函数返回的是引用,引用的特殊就在于它可以在函数调用过程中改变数值。但是一般情况下没有多少人这么写代码吧,至少我没有这么写过。

个人见解,请达人指点


[解决办法]
函数返回值采用“引用传递”的场合并不多,这种方式一般只出现在类的赋值函数
中,目的是为了实现链式表达。
例如
class A
{
A & operate = (const A &other); // 赋值函数
};
A a, b, c; // a, b, c 为A 的对象
a = b = c; // 正常的链式赋值2001 Page 84 of 101
(a = b) = c; // 不正常的链式赋值,但合法
如果将赋值函数的返回值加const 修饰,那么该返回值的内容不允许被改动。上例
中,语句 a = b = c 仍然正确,但是语句 (a = b) = c 则是非法的。

认为对于函数来说上面例子就可以了解大概了,对于内部类型左值就是能够被赋值的变量。
像 const int a = 0; a就不是左值了因为不能被赋值

热点排行