在给定的代码片段中:
class wrap { operator obj() const & { ... } //Copy from me. operator obj() && { ... } //Move from me. };
我们遇到两个具有不同 ref 的成员函数声明- 限定符(& 和 &&)。但是,单个与号 (&) 表示什么?
非静态成员函数声明中的单个与号表示当对象是左值引用时调用该成员函数。默认情况下,可以在左值和右值对象上调用非静态成员函数。但是,通过指定 &,该函数只能接受左值。
为了说明差异:
struct foo { void bar() {} void bar1() & {} void bar2() && {} };
示例:
int main() { foo().bar(); // (always fine) foo().bar1(); // doesn't compile because `bar1()` requires an lvalue foo().bar2(); // doesn't compile because `bar2()` requires an rvalue foo f; f.bar(); // (always fine) f.bar1(); f.bar2(); // doesn't compile because `bar2()` requires an rvalue }
以上是C 成员函数声明中的单个与号 (&) 意味着什么?的详细内容。更多信息请关注PHP中文网其他相关文章!