This question already has answers here:
What is “rvalue reference for *this”?

(3个答案)


7年前关闭。




在阅读http://en.cppreference.com/w/cpp/language/member_functions时,我遇到了一些以前从未见过的东西:lvalue/rvalue Ref-qualified member functions。他们的目的是什么?

最佳答案

只需在下面阅读:

#include <iostream>
struct S {
    void f() & { std::cout << "lvalue\n"; }
    void f() &&{ std::cout << "rvalue\n"; }
};

int main(){
    S s;
    s.f();            // prints "lvalue"
    std::move(s).f(); // prints "rvalue"
    S().f();          // prints "rvalue"
}
因此,在重载解析期间,如果调用者对象是lvalue,则编译器将查找&-qualified函数;如果调用者对象是rvalue,则将查找&&-qualified函数。

09-27 11:39