可以在括号中重载operator[]
以取一个参数。但是,如何重载此运算符以允许用户键入object[a] = b
?
答案 0 :(得分:2)
您会返回对项目的引用,例如:
A &operator[](int pos) { return list[pos]; }
所以,当你说object[a]=b;
时,它实际上已翻译成:
A &tmp=object[a];
tmp=b;
或者用更清晰的术语表示:
A *tmp=object[a]; // more or less a pointer
*tmp=b; // you replace the value inside the pointer
答案 1 :(得分:1)
运算符的一般声明(它应该是一个类成员函数)如下
ObjectElementType & operator []( size_t );
答案 2 :(得分:1)
下标运算符通常是成对的: -
T const& operator[] (size_t ) const;
T& operator[] (size_t ); // This enables object[a] = b on non-const object