可能重复: const引用是否延长了临时的生命? 延长临时工的寿命 C ++允许将临时对象仅分配给const引用。 它不会允许指定临时对象的分配。 例如: String& a = String("test"); // Error const String& a = String("test"); // Ok 到处都是谷歌这个结果,我只看到下面的答案 修改临时对象会导致无法识别的问题 修改临时对象是危险的 在某个时候,你会忘记它是一个临时variables 据说,声明之后,临时物体消失了。 所以你不应该修改它。 如果C ++非常热衷于阻止修改临时对象,它应该阻止读取临时对象吗? 如果临时对象消失了,那么从这里读内容是没有意义的呢? 可能的情况下,权利可能发生,也可能涉及阅读。 那么为什么它一直在阻止写,允许读? 请给我一个坚实的C ++代码解释。 请不要通过指出一些替代scheme来改变这个问题。 请给我坚实的答案,代码为什么const int&是允许的,int&不允许用于临时对象。 一个说&&是在那里..我的问题不同..另一个说,改变不会反映..改变也不会反映,即使它是const int&too。 例如:double a; const int&i = a; 一个++; 不会影响我..
我在编译gcc一些可移植代码时遇到了这个问题。 基本上这个奇怪的代码在Visual Studio中编译,这实际上只是打动了我的脑海: class Zebra {int x;}; Zebra goo() {Zebra z; return z;} void foo(Zebra &x) { Zebra y; x = y; foo(goo()); } Visual studio让这个飞行。 gcc将捕获这个作为编译错误。 有趣的是,如果你把Zebrainputint, VC++会报错。 相当矛盾的行为。 思考?