繁体   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