1、基本概念
引用限定符可以是 & 或 &&,可以放在函数参数列表后分别指出this可以指向一个左值或右值。引用限定符只能用于(非static)成员函数,且必须出现在函数的声明和定义中。引用限定符也可以区分重载版本。如果一个成员函数有引用限定符,则具有相同参数列表的所有版本都必须有引用限定符。
2、实例演示
#include <iostream>
using namespace std;
class Ct {
public:
void func() && {
cout << "可用于可改变的右值" << endl;
}
void func() & {
cout << "可用于可改变的左值" << endl;
}
};
int main(void)
{
cout << "右值引用调用" << endl;
(move(*make_shared<Ct>())).func();
cout << "左值引用调用" << endl;
make_shared<Ct>()->func();<span id="transmark"></span>
}
输出结果:
c1调用
可用于可改变的右值
c2调用
可用于可改变的左值
请按任意键继续. . .
3、如对上述代码第17行有疑问
考虑到安全因素,具名变量即使被声明为右值类型也不会被当作右值。如需把它当作右值,须使用库函数std::move()。 —— 摘自百度百科(右值引用)