亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 在等號(hào)左邊就是左值嗎? 臨時(shí)變量在等號(hào)左邊,算左值還是右值? [打印本頁]

作者: asker160    時(shí)間: 2016-07-01 09:39
標(biāo)題: 在等號(hào)左邊就是左值嗎? 臨時(shí)變量在等號(hào)左邊,算左值還是右值?
本帖最后由 asker160 于 2016-07-01 19:54 編輯

  1. int a=1;//這個(gè)a是左值無疑嗎?
復(fù)制代碼

  1. int a;
  2. a=1;
  3. int *b;
  4. *b=a;//這個(gè)*b是左值嗎?
復(fù)制代碼
問題,我可以構(gòu)造一個(gè)臨時(shí)變量,讓它出現(xiàn)在等號(hào)的左邊,如下:

  1. #include<iostream>
  2. using namespace std;
  3. struct A{
  4.     int m_i;
  5.     A(int i):m_i(i){}
  6.     A& operator=(int i){
  7.         m_i=i;
  8.         return *this;
  9.     }
  10.     A operator+(const A&other){
  11.         return A(m_i+other.m_i);
  12.     }
  13.     ~A(){cout<<m_i<<endl;}
  14. };
  15. int main()
  16. {
  17.     A a1(2);
  18.     A a2(3);
  19.     (a1+a2)=5;//這里的(a1+a2)是左值還是右值?
  20.     return 0;
  21. }
復(fù)制代碼
上面的main函數(shù)中,a1+a2構(gòu)造了一個(gè)臨時(shí)變量,它出現(xiàn)在等號(hào)左邊。那么它到底算左值還是右值,還是別的?
作者: cjfeii    時(shí)間: 2016-07-22 11:50
a1+a2 的結(jié)果是一個(gè)對(duì)象,是一個(gè)臨時(shí)變量,他是左值。
作者: cjfeii    時(shí)間: 2016-07-22 11:51
作用域很小:
  1. $ g++ a.cpp
  2. $ ./a.out
  3. 5
  4. 3
  5. 2
復(fù)制代碼

作者: cclxpp123    時(shí)間: 2016-08-02 21:13
本帖最后由 cclxpp123 于 2016-08-02 21:31 編輯

a1+a2創(chuàng)造了一個(gè)臨時(shí)對(duì)象,是一個(gè)xvalue.
左值與右值的根本區(qū)別在于是否允許取地址&運(yùn)算符獲得對(duì)應(yīng)的內(nèi)存地址。能得到地址的為左值,我們知道它在內(nèi)存中的具體位置;右值是臨時(shí)變量,得不到地址,但可以通過std::move()函數(shù)轉(zhuǎn)化為左值





歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2