臨時物件是乙個普通的物件,只是由於它並未提供物件名,同時也不像堆物件(無名物件)一樣提供了物件的指標(即知道物件的位址),所以一般只用來作右值,但這並不說明沒有左值屬性
乙個物件必然有左值和右值,系統是否提供給使用者使用則是另外一碼事
與物件相對的概念是文字常量,二者區別在於,是否能夠定址
乙個物件:左值(物件的位址值);右值(物件的資料值)
不是說,乙個物件擁有左值和右值,而是乙個物件使用的時候,在某時作左值,在某時作右值,有著兩種形式,i = i +3;左邊的i即左值,右邊的i即右值
class jdz
return i;}};
void fun(int i, jdz& f)
int main()
void fun(int i, jdz* f)
int main()
這個函式物件的例子,通過實參(乙個臨時物件),形參是臨時物件的引用或指標,取到了臨時物件的位址並顯式,證實了臨時物件屬於物件,則必存在左值,右值的表現形式,所以
臨時物件是右值的說法是片面的
物件,既然是個物件則必同時有左值右值兩種屬性
解析區域性物件與臨時物件
沒有名字的物件就是臨時物件,它存在於完整的表示式的生存其間。也就是說,當表示式計算結束後就會被釋放。乙個例外是,當臨時物件被引用時,它的生存期將延長到與這個引用的生存期一樣長。區域性物件就是可見區域在乙個函式範圍的物件。區域性物件有兩種,靜態區域性物件的生存期起於所在函式第一次被呼叫,結束於main...
左右值引用
1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...
臨時物件的產生與運用
所謂的臨時物件,就是一種無名物件。它的出現如果不在程式設計師的預期之下 例如,任何 pass by value操作都會引發copy操作,於是就形成了乙個臨時物件 這往往會造成效率上的負擔,但是在有些情況下,我們會刻意製造一些臨時物件,卻又會使程式乾淨清爽。刻意製造臨時物件的方法是,在型別名稱之後直接...