【发布时间】:2018-08-03 09:33:46
【问题描述】:
我找到了具有这样 API 的 C++ 类:
class foo
{
.....
public:
int& func1() & ;
int func1() && ;
.....
}
操作符&和&&在方法名后面是做什么的,这两个函数有什么区别。
【问题讨论】:
标签: c++
我找到了具有这样 API 的 C++ 类:
class foo
{
.....
public:
int& func1() & ;
int func1() && ;
.....
}
操作符&和&&在方法名后面是做什么的,这两个函数有什么区别。
【问题讨论】:
标签: c++
这些被称为“引用限定符”,允许您根据*this 的值类别重载成员函数。
int& func1() & 意味着:func1 的重载可以在可以绑定到左值引用的任何*this 实例上调用。
int func1() && 意味着:func1 的重载可以在*this 的任何实例上调用,该实例可以绑定到右值引用。
例如
foo f; f.func1(); // calls &-qualified version
foo{}.func1(); // calls &&-qualified version
【讨论】: