【发布时间】:2016-01-12 16:33:17
【问题描述】:
谁能告诉我为什么 Visual Studio C++ 编译器不允许我这样做:
string& s = "abc";
但我可以做到:
string& s = string("abc");
当我尝试在 linux 上编译第二个示例时,g++ 编译器实际上抛出了一个错误,这正是我所期望的。谷歌快速搜索告诉我,在第二种情况下,临时变量的寿命延长到引用的寿命,但话说回来,第一个例子有什么问题,为什么 g++ 抱怨它?
【问题讨论】:
-
int i&没有意义。你有int &i吗? -
您只能使用 const 引用来执行此操作。这与能够对临时对象进行 const 引用有关 - 如果这不存在,您将很容易获得悬空引用。对于非常量引用,它是无效的(因为该参数不适用)。当然,您的编译器可以随意出问题。
-
@NathanOliver 你是对的,我很抱歉,我最初是在字符串上测试它并将其更改为整数,在我的代码和帖子中都出错:/我编辑了这个问题。现在可能会更有意义。