这一次我一直在研究值类别。我对所有关于类别的定义和解释都满意,但我觉得如果有人能解释我为什么字符串文字不是密码
我知道表达式的值/结果在没有标识但可移动时属于 prvalue
类别
int i=42;char i='a'; //prvalue
string i ="notprvalue";
字面上的“notprvalue”不是没有身份和动产吗?
最佳答案
不能移动字符串文字。它们是基本类型的数组,因此移动与拷贝无法区分。
并且字符串文字具有事实上的对象标识,因为它们的生命周期超出了它们的本地范围(这是它们无法移动的另一个原因)。这就是为什么您可以从函数返回文字的 const char*
而仍然让程序运行的原因。此外,如果文字属于同一字符串,则两个字符串文字可以引用相同的字符数组(它们的指针可以相同)。所以“bar”和“bar”可能指向同一个内存。
关于c++ - 为什么字符串文字不是纯右值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41350090/