为什么字符串文字不是prvalue

时间:2016-12-27 18:10:01

标签: c++

我这个时候一直在寻找价值类别。我对所有关于类别的定义和解释都很好,但我觉得如果有人能解释为什么字符串文字不是prvale

我已经理解了表达式的值/结果在没有标识但可移动时属于prvalue类别

int i=42;char i='a'; //prvalue
string i ="notprvalue";

文字“notprvalue”不具有身份和动产吗?

1 个答案:

答案 0 :(得分:3)

无法移动字符串文字。它们是基本类型的数组,因此移动与副本无法区分。

字符串文字具有事实上的对象标识,因为它们的生命周期超出了它们的本地范围(另一个原因是它们无法移动)。这就是为什么你可以从一个函数返回一个const char*的文字但仍然有程序工作的原因。此外,如果文字是相同的字符串,则两个字符串文字可以引用相同的字符数组(它们的指针可以相同)。所以" bar"和" bar"可能指向相同的记忆。

相关问题