函数的引用限定符是什么?

4
根据这个网页,非静态成员函数在声明时可以有一个结尾的&&&。他们举了以下的例子。
struct S {
    virtual int f(char) const, g(int) &&; // declares two non-static member functions
    };

第二个函数的签名中是否包含 virtual 关键字?

virtual int g(int) &&

2) “&&”末尾的含义是什么?


2
请为您的文本中的两个不同问题创建两个不同的问题。 - Stephan Dollberg
1
&& 是用于 '*this' 的右值引用。 - Jarod42
1个回答

7
struct S {
  virtual int f(char) const, g(int) &&;
};

struct D : S {
  virtual int f(char) const override;
  virtual int g(int) && override;
};

以上代码在g++和clang中都可以编译通过。这至少在实践中表明S中的gvirtual的。

关于你的另一个问题,请参见"rvalue reference for *this"是什么?


2
很好的使用了 override!我原本想通过测试基类指针是否调用了正确的 g 来确认,但这种方式更好! - Alejandro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接