gpt4 book ai didi

c++ - 何时何地使用 xvalue?

转载 作者:可可西里 更新时间:2023-11-01 18:29:30 24 4
gpt4 key购买 nike

我阅读了关于xvalue 的标准。它与 rvalue reference 表达式密切相关。但是在编程的时候,实在找不到需要xvalue的场景。

例如:函数 myClass&& f() 返回一个 rvalue reference。所以表达式 f() 是 xvalue。但这有什么用呢?我如何在编程中使用这种技术?

如果定义了另一个函数myClass g()g()f()有什么区别?

在什么情况下我应该使用f()和xvalue而不是g() prvalue

最佳答案

在您的示例中,您定义了一个返回纯右值的函数 g 和一个返回 xvalue 的函数 f

它们的共同点是,如果您分别传递函数调用的结果,g()f(),对于另一个函数 h(...),它们都更喜欢将右值作为参数的 h 的重载(如果 h< 有多个重载)。

g()f() 之间的区别g() 没有动态类型(即动态类型与静态(=声明的)类型相同),而 f() 具有动态类型(可能不同于静态类型),换句话说,如果它被定义为返回对基类的右值引用,它将启用多态行为。 (正是这个特征使 xvalues 与 lvalues 共享,这就是为什么 xvalues 和 lvalues 一起形成更大的 glvalues 组,而 prvalues 只是右值。)

对于用例示例,我将仅引用这个现有问题:Is there any case where a return by rvalue reference is useful .

关于c++ - 何时何地使用 xvalue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17386846/

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