Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 解引用右值指针是否会产生左值?_C++_Memory - Fatal编程技术网

C++ 解引用右值指针是否会产生左值?

C++ 解引用右值指针是否会产生左值?,c++,memory,C++,Memory,我有简单的代码: int & i = *(new int(100)); 据我所知,方程的RHS是右值。。如何将右值绑定到左值引用 此外,如果这是合法的,它是否总是产生期望的结果,或者它是一种未定义的行为?如果我删除&I,它也会是一个未定义的行为吗?赋值的右侧是一个未引用的指针,这是一个左值,因此绑定对它的左值引用没有问题。本标准在左值定义(3.10/1)中特别给出了未引用指针的示例: 左值(历史上称为左值,因为左值可能出现在赋值表达式的左侧)指定函数或对象。[示例:如果E是指针类型的表

我有简单的代码:

int & i = *(new int(100));
据我所知,方程的RHS是右值。。如何将右值绑定到左值引用


此外,如果这是合法的,它是否总是产生期望的结果,或者它是一种未定义的行为?如果我删除&I,它也会是一个未定义的行为吗?

赋值的右侧是一个未引用的指针,这是一个左值,因此绑定对它的左值引用没有问题。本标准在左值定义(3.10/1)中特别给出了未引用指针的示例:

左值(历史上称为左值,因为左值可能出现在赋值表达式的左侧)指定函数或对象。[示例:如果E是指针类型的表达式,那么*E是引用E指向的对象或函数的左值表达式。另一个示例是,调用返回类型为左值引用的函数的结果是左值。-结束示例]

没有未定义的行为,因为
i
引用了有效的对象


您关于
删除
的问题已涵盖。

昨天询问^^@H2CO3我看到了那个问题,并对这个问题留下了评论,但没有人回答,所以我提出了自己的问题。我在问更多关于价值类型的基本知识,这在那篇文章的回答中没有讨论。