[英]Is the expression that allocates memory rvalue expression or lvalue expression?
假設我有以下代碼
int main(){
new int; // Is this expression l-value or r-value??
return 0;
}
我知道左值是持久對象(因為它在內存中具有特定的位置,即使在表達式結束后我們也可以訪問后者)並且rvalues是臨時對象(它在內存中沒有位置並且在表達式結束后蒸發)。
我看到了一些rvalue表達式。 如果表達式返回一個地址(內存中的特定位置),它怎么能是rvalue。 或者它是否是rvalue因為表達式new int返回(地址值),它會消失,並且在表達式結束后永遠不會被捕獲。
new int
是一個r值。
你不能使用:
int i;
(new int) = &i;
也許您正在考慮new int
地址返回其地址的對象。 表示返回地址的對象的表達式*(new int)
是l值。 您可以使用:
*(new int) = 10;
那不是好代碼。 它會泄漏內存,但它是合法代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.