我在xvalue上读到了标准。它与rvalue reference表达密切相关。但是在编程时,我真的找不到需要xvalue的场景。
例如:函数myClass&& f()返回一个rvalue reference。所以表达式f()是xvalue。但是这有什么用呢?我如何在编程中使用这种技术?
如果定义了另一个函数myClass g(),那么g()和f()有什么区别?
在什么情况下我应该使用f() and xvalue而不是g() prvalue
发布于 2013-06-30 11:53:22
在您的示例中,您定义了一个返回prvalue的函数g和一个返回x值的函数f。
它们的共同点是,如果您将函数调用的结果g()和f()分别传递给另一个函数h(...),它们都会倾向于使用以右值作为参数的h重载(如果有多个h重载)。
g()和f()之间的区别在于g()没有动态类型(即动态类型与静态(=声明)类型相同),而f()具有动态类型(可能与静态类型不同),换句话说,如果它被定义为返回对基类的右值引用,它将启用多态行为。(这就是xvalue与lvalue共享的特征,这就是为什么xvalue和lvalue一起形成了更大的glvalue组,而prvalue只是rvalue。)
关于用例的例子,我只会参考这个现有的问题:Is there any case where a return by rvalue reference is useful。
https://stackoverflow.com/questions/17386846
复制相似问题