使用operator []和operator =

dra*_*nen 3 c++ operator-overloading

给定一个重载'[]'运算符的简单类:

class A
{
  public:
    int operator[](int p_index)
    {
       return a[p_index];
    }

  private:
    int a[5];
};
Run Code Online (Sandbox Code Playgroud)

我想完成以下内容:

void main()
{
   A Aobject;

   Aobject[0] = 1;  // Problem here
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我如何重置赋值'='运算符以使用'[]'运算符?

ken*_*ytm 16

您不会使=操作员超载.你返回一个参考.

int& operator[](int p_index)
{
   return a[p_index];
}
Run Code Online (Sandbox Code Playgroud)

确保提供一个const版本:

const int& operator[](int p_index) const
{
   return a[p_index];
}
Run Code Online (Sandbox Code Playgroud)

  • +1.另外,你可能想要在const:`int operator [](int p_index)const`上重载 (2认同)
  • 在const版本中,您可以返回一个简单的`int`而不是`const int&`. (2认同)

小智 5

让它返回一个参考:

int & operator[](int p_index)
{
   return a[p_index];
}
Run Code Online (Sandbox Code Playgroud)

请注意,您还需要一个const版本,它确实返回一个值:

int operator[](int p_index) const
{
   return a[p_index];
}
Run Code Online (Sandbox Code Playgroud)