簡體   English   中英

是分配內存rvalue表達式還是左值表達式的表達式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM