C++ 为什么在定义重载和引用函数时,每个函数都要有一个引用限定符?

问题描述 投票:0回答:1

我不明白:为什么如果一个成员函数有引用限定符,那么所有具有相同列表的版本都必须有引用限定符,是不是因为这个函数被调用时会产生多个定义?

class A{
   public:
         A sorter() &&;
         A sorter();
         A operator+ (const A&);
       }

虽然上面只有函数声明,但应该足够了。

A a , b;
(a+b).sorter();

上述函数的定义和调用是否会使编译器无法识别该使用哪个成员函数?

c++ c++11 reference c++14
1个回答
1
投票

当一个重载是引用限定符时,其他重载也必须是引用限定符。 这样就可以了。

     A sorter() &&;
     A sorter() &;

换一种说法: 你可以在两组可能的重载中选择:

  1. const 和非const(非限定)。
  2. const& 同义词 const 在1中)。) & (非宪法),和 && (ruetemporary)。
© www.soinside.com 2019 - 2024. All rights reserved.