C++ 引用文字时为什么必须使用常量引用
我知道只有object可以引用。但文字不是对象。 所以我可以理解为什么以下代码无法编译:C++ 引用文字时为什么必须使用常量引用,c++,reference,constants,literals,C++,Reference,Constants,Literals,我知道只有object可以引用。但文字不是对象。 所以我可以理解为什么以下代码无法编译: int &a = '4'; int &b = 2; 但是,当我在它们前面添加const时,它可能会起作用 const int &a = '4'; const int &b = 2; 我不知道为什么。有人能帮我吗?(假设您在第二段中漏掉了“&”) 因为文字不是一个对象;将创建一个临时对象,其值与文字对应 可以将临时对象绑定到常量引用,从而延长该对象的生存期,但不能将其绑定到
int &a = '4';
int &b = 2;
但是,当我在它们前面添加const时,它可能会起作用
const int &a = '4';
const int &b = 2;
我不知道为什么。有人能帮我吗?(假设您在第二段中漏掉了“&”)
因为文字不是一个对象;将创建一个临时对象,其值与文字对应
可以将临时对象绑定到常量引用,从而延长该对象的生存期,但不能将其绑定到非常量引用 整数或字符文字是prvalue[expr.prim.general] 文本是一个主要表达式。其类型取决于其形式(2.13)。字符串文字是左值;所有其他文字都是prvalues 由于它是一个prvalue,我们可以对它取一个
常量&
,但我们不能引用它。如果我们将常量&
作为临时变量,则临时变量的生存期将延长到引用超出范围的点
{
const int & a = 42;
//line of code
//42 still exits here
} // a goes out of scope and now 42 is gone
这里物体的平均寿命是多少?为什么我需要扩展它?