这个[]运算符是如何重载的?

时间:2017-05-03 13:49:34

标签: c++ class operator-overloading

我试图自己构建一个2D矢量类。

当我正在寻找其他人实施的示例代码时,我发现了这一点:

class Vector2D {
 public:

  // components
  double x, y;

  Vector2D() : x( 0.0 ), y( 0.0 ) { }

  // returns reference to the specified component (0-based indexing: x, y)
  inline double& operator[] ( const int& index ) {
    return ( &x )[ index ];
  }
}

[]运算符是如何重载的?我如何理解(&x)[index]

1 个答案:

答案 0 :(得分:5)

  

[]运算符如何重载?

严重。

  

我如何理解(&x)[index]

这是一行代码假装我们可以使用指针算法安全地浏览类的成员。我们不能。代码坏了。

此外,通过const引用获取int只是愚蠢的;基本上没有办法对优化者有用。 int很小,甚至可能比编译器可能需要的指针更小"引擎盖下#34;实现这个参考。