c++引用限定符&和&&
c++引用限定符&和&&
如果我们定义了两个或两个以上具有相同名字和相同参数列表的成员函数,就必须对所有函数都加上引用限定符,或者都不加。
如果一个成员函数有引用限定符,则具有相同参数列表的所有版本都必须有引用限定符。
《c++ primer中文版》p484
为什么?看下面两个例子:
class Foo{
public:
Foo sorted() &&; //可用于可改变的右值
Foo sorted() const;
}
如果一个可改变的右值调用sorted(),编译器不知道应该使用哪个版本。
class Foo{
public:
Foo sorted();
Foo sorted() const &;//用于任何类型的Foo
}
如果一个左值调用sorted(),编译器不知道应该使用哪个版本。
参考资料:《c++ primer中文版》
浙公网安备 33010602011771号