【问题标题】:using operator & after class method name [duplicate]在类方法名称之后使用运算符 & [重复]
【发布时间】:2018-08-03 09:33:46
【问题描述】:

我找到了具有这样 API 的 C++ 类:

class foo
{
.....
public:
int& func1() & ;
int func1() && ;
.....
}

操作符&&&在方法名后面是做什么的,这两个函数有什么区别。

【问题讨论】:

    标签: c++


    【解决方案1】:

    这些被称为“引用限定符”,允许您根据*this 的值类别重载成员函数。

    • int& func1() & 意味着:func1 的重载可以在可以绑定到左值引用的任何*this 实例上调用。

    • int func1() && 意味着:func1 的重载可以在*this 的任何实例上调用,该实例可以绑定到右值引用

    例如

    foo f; f.func1(); // calls &-qualified version
    foo{}.func1();    // calls &&-qualified version
    

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2015-04-17
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多