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
我到处搜索这个结果,我只看到以下答案
- 修改临时对象会导致无法识别的问题
- 修改临时对象是危险的
- 在某些时候,你会忘记它是一个临时变量
据说,临时对象在声明后消失。所以你不应该修改它。
如果 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/