当一个类对象用作数组的索引时会发生什么?

时间:2014-12-31 11:03:57

标签: c++ arrays class operator-overloading

假设我们有一个班级:

class A {
  private:
      int index;
  public:
  // related overloaded functions and other stuffs
};

现在说我们将它用作期望int。

的数组中的索引
A in;
Z z = arr[in]; // arr is of some type Z.

我想询问'在'用于' in',调用什么函数(比如复制构造函数或重载赋值运算符)或者对象直接在这里进行类型转换。

如果班级是这样的话会有什么不同

class A {
  private:
    int index1;
    int index2;
  public:
 // related overloaded functions and other stuffs
};

1 个答案:

答案 0 :(得分:2)

您的A课程可能已定义operator intoperator size_t。该运算符用于将该类的实例转换为整数类型,此时将进行常规数组访问。例如:

class A {

public:

    operator int() const;
};

class IN {

public:

};

int main()
{
    A a;

    IN in[4];

    in[a];
}