读书人

哪些表达式回到的是左值

发布时间: 2013-07-08 14:13:00 作者: rapoo

哪些表达式返回的是左值?

void f( int x, int y )
{
int j = x = y;
int* p = &++x;
int* q = &( x++ ); //这个是错的。
int* pp = &( x>y ? x : y );
}
错的那个x++返回的是什么?返回的是右值?

在哪能查到表达式的返回值是左值还是右值?还是应该说运算符的返回值是左值还是右值?
[解决办法]
引用:
Quote: 引用:

http://www.oschina.net/question/234345_52587

用&试也太累了吧?没有什么直接就能看出来的方法么?


看标准文档最直接,在Expression中讲得很清楚。
要试验的话,用内建操作符&是最合适了。

C++0x里可以写两个重载的函数模板,一个参数是左值引用,一个参数是右值引用,然后用表达式作为参数去调用……好像比用&还麻烦。

读书人网 >C++

热点推荐