可能重複: lvalue and rvalue difference between c's expression and c++'s expression 上執行下面的程序中,我得到了錯誤的信息,如「需要左值中缺少主要功能「 main()
{
int i;
printf("%d",++i++);
}
請告訴我什麼是右值和左值。 如果有這種類型的其他值,請解釋一下。
C++ 03§4.2N°1: 左值或類型的右值「陣列NT的」或「的陣列T的未知邊界「可以轉換爲類型爲」指向T的指針「的右值。結果是指向數組的第一個元素的指針。 很長時間以來,我一直在困惑的是,我並不完全理解數組類型的右值意味着什麼。也就是說,我無法想出一個表達式,其類型是一個數組,結果是一個右值。我讀this線程,它基本上提出相同的問題,並且接受的答案是「不,數組類型不存在右值」。我想我可能會對此
請問,有人可以用簡單的英語解釋什麼是「將移動語義擴展到* this」? I am referring to this proposal。所有我在尋找的是什麼是& 爲什麼我們需要那個。請注意,我確實瞭解通常的右值引用是什麼,移動語義是在哪個基礎上構建的。我無法理解這樣的擴展對rvalue引用的影響!
的ISO/IEC 14882, Programming language – C++廣泛閱讀後我爲什麼需要const隱式轉換爲用戶定義的類型與單個參數的構造類似於下面 #include <iostream>
class X {
public:
X(int value) {
printf("constructor initialized with %i",value);