当我在C++中将临时int赋值给const引用时会发生什么
What happens when I assign a temporary int to a const reference in C++?
可能重复:
const引用会延长临时引用的寿命吗?
假设我有一个函数f
:
int f(int x){return x;}
const int &a=f(1);
我知道f(1)
只是暂时的,我会在这个声明之后被销毁,但
- 使引用const会使f(1)有很长的寿命吗
- 如果是,
f(1)
将存储在哪里 - 这是否意味着
x
在超出范围时也没有被销毁 f(1)
和x
之间有什么区别
您混淆了表达式和值。
1) 表达式f(1)
返回的临时值的生存期将延长。此规则对于const
引用是唯一的。
2) 编译器想要的任何位置,但可能在堆栈上。
3) 也许吧。这取决于编译器是复制了x
还是执行了复制省略。由于类型为int
,因此无所谓。
4) 有很多不同。一个是int f(int)
内部的局部变量的名称。它是一个左值。另一个是调用int f(int)
并计算为右值的表达式。
将临时对象绑定到const&
会将临时对象的生存期延长到引用的生存期。
相关文章:
- 将const引用参数初始化为默认参数会导致悬空引用吗
- 为什么当我为 for(auto& it : myUnorderedMap) {... = std::move(it.second)} 时,我会得到一个 const 引用?
- 将对象传递给函数而不将其包装到 std::ref 中,而参数被指定为 const 引用
- 如何在构造函数中传递 const 引用时强制编译器不接受右值
- 为什么我需要三个嵌套的大括号来调用赋值运算符,将const引用到二维数组
- 对临时对象的Const引用不会延长其生存期
- 对 const 引用参数使用默认值会导致崩溃
- 在运算符重载中使用带有 const 引用的 friend 函数
- C++通过 const 引用传递时不调用派生类函数
- 具有字符串文本构造函数的类不适用于 const 引用初始化
- 为什么要返回对小类成员的 const 引用?
- C - 最好将枚举类作为值或const引用
- RVO:返回由值传递的值,即使显式分配给 const 引用也是如此
- const引用与可变成员的对象
- 每当传递lvalue时,每当通过rvalue传递时,将const引用存储
- 对类成员而不是 getter 的 Const 引用
- 从类型 'Matrix&' 的右值初始化 类型的非 const 引用无效 'Matrix'
- 在函数中使用 const 引用参数访问函数中成员的最佳实践 C++.
- STD ::配对的const引用如何工作
- 为什么我的C 函数拒绝返回const引用