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式a , b和c是左值。