我什么时候需要实现operator []?

Ron*_*n_s 1 c++ templates class

给出以下模板函数:

template <class T>
void DoSomething(T &obj1, T &obj2)
{
      if(obj1 > obj2)
        cout<<"obj1 bigger: "<<obj1;
      else if(obj1 == obj2)
        cout<<"equal";
      else cout<<"obj2 bigger: "<<obj2;

      T tmp(3);
      T array[2];
      array[0]=obj1;
      array[1]=obj2;
}
Run Code Online (Sandbox Code Playgroud)

我需要定义一个名为MyClass的类(仅限声明,即只是.h文件),它可以使用该模板函数.我定义了下一个声明:

class MyClass
{
public:
    MyClass();    // default ctor
    MyClass(int x);  // for ctor with one argument
    bool operator ==(const MyClass& myclass) const;
    bool operator >(const MyClass& myclass) const;
    friend ostream& operator<<(ostream &out,const MyClass& myclass);  // output operator

};
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么不需要为行定义operator []:

array[0]=obj1; array[1]=obj2; 
Run Code Online (Sandbox Code Playgroud)

?我什么时候需要定义operator []?谢谢,罗恩

Mu *_*iao 6

您为类型声明了一个数组:

T array[2];
Run Code Online (Sandbox Code Playgroud)

但是你正在谈论实现operator [] T,这是完全不同的概念.

如果你需要

T t;
t[1] = blah
Run Code Online (Sandbox Code Playgroud)

然后你需要实现operator []