gpt4 book ai didi

c++ - 为什么不是对临时对象的非常量引用?

转载 作者:IT老高 更新时间:2023-10-28 14:00:03 27 4
gpt4 key购买 nike

Possible Duplicate:
Does a const reference prolong the life of a temporary?
prolonging the lifetime of temporaries

C++ 只允许将临时对象分配给 const 引用。它不允许分配临时对象来引用。

例如:

String& a = String("test");         // Error
const String& a = String("test"); // Ok

我到处搜索这个结果,我只看到以下答案

  1. 修改临时对象会导致无法识别的问题
  2. 修改临时对象是危险的
  3. 在某些时候,你会忘记它是一个临时变量

据说,临时对象在声明后消失。所以你不应该修改它。

如果 C++ 如此热衷于阻止修改临时对象,它应该阻止读取临时对象吧?如果临时对象消失了,那么从那里读取内容没有意义吗?可能发生权利的情况也可能涉及读取。

那为什么它一直阻止单独写入并允许读取?

请给我一个可靠的 c++ 代码解释。

请不要通过指出一些替代方案来偏离问题。请用代码给出可靠的答案,为什么允许使用 const int & 而不允许临时对象使用 int &。

有人说 && 在那里.. 我的问题不同..另一个说,改变不会反射(reflect)..即使它是 const int & 也不会反射(reflect)。例如:双a;常量 int & i = a;一个++;不会影响i..

最佳答案

最初不允许引用临时对象的情况是函数参数。假设这是允许的:

void inc(double& x)
{ x += 0.1; }

int i = 0;
inc(i);

为什么 i 没有改变?

关于c++ - 为什么不是对临时对象的非常量引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826897/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com