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我看到了那个问题,并对这个问题留下了评论,但没有人回答,所以我提出了自己的问题。我在问更多关于价值类型的基本知识,这在那篇文章的回答中没有讨论。