C ++中下标运算符的异常

时间:2015-05-11 03:21:25

标签: c++

我最近偶然发现了以下观察结果。 当重载操作数中的一元++运算符时,在运算符之前或之后,如下所示。

 void operator++(int y)
{
    x++;
}

 void operator++()
    {
        x++;
    }

但是当重载下标运算符时,操作数放在operator.Like

之间
int &operator[](float i)
  {
      return x[int(i)];
  }

请帮我得出结论。

1 个答案:

答案 0 :(得分:0)

void operator++(int y)

是编译器用来区分此 postfix 运算符与前缀版本

的约定
void operator++()

在这种情况下,y只是一个虚拟变量,你可以保留名称,并将后缀定义为void operator++(int)

另一方面

int &operator[](float i)

是一个不同的运算符,此处float用作实参(没有前缀/后缀operator[])。