如何重载operator []以允许`object [a] = b`?

时间:2014-10-11 17:58:13

标签: c++ operator-overloading

可以在括号中重载operator[]以取一个参数。但是,如何重载此运算符以允许用户键入object[a] = b

3 个答案:

答案 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