xvalues,glvalues和prvalues的真实生活的例子?

我想知道是否有人能够说出或解释一些xvalues,glvalues和prvalues的真实生活的例子? 我读过类似的问题:

什么是右值,左值,左值,右值和左值?

但我不明白大家的意思。 任何人都可以解释在什么情况下,这些价值观是重要的,何时应该使用它们?

考虑以下课程:

class Foo { std::string name; public: Foo(std::string some_name) : name(std::move(some_name)) { } std::string& original_name() { return name; } std::string copy_of_name() const { return name; } }; 

expression式some_foo.copy_of_name()是一个prvalue ,因为copy_of_name 返回一个对象std::string ),而不是一个引用。 每一个prvalue也是一个右值。 (右值更一般。)

expression式some_foo.original_name()是一个左值 ,因为original_name 返回一个左值引用std::string& )。 每一个左翼也是一个滑轮。 (Glvalues更一般。)

expression式std::move(some_name)是一个xvalue ,因为std::move 返回一个右值引用std::string&& )。 每个xvalue也是一个glvalue和一个rvalue。


请注意,对象和引用的名称总是左值:

 std::string a; std::string& b; std::string&& c; 

鉴于上述声明,expression式abc是左值。