gpt4 book ai didi

c++ - xvalues、glvalues和prvalues的真实例子?

转载 作者:IT老高 更新时间:2023-10-28 14:00:49 28 4
gpt4 key购买 nike

我想知道是否有人可以讲述或解释一些 xvalues、glvalues 和 prvalues 的现实生活示例?我读过一个类似的问题:

What are rvalues, lvalues, xvalues, glvalues, and 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;
}
};

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

表达式 some_foo.original_name() 是一个左值,因为 original_name 返回一个左值引用 (std::string&)。每个左值也是一个左值。 (Glvalues 更通用。)

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


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

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

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

关于c++ - xvalues、glvalues和prvalues的真实例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609968/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com