如何重载运算符[]以允许`object[a]=b`

How can I overload operator[] to allow for `object[a] = b`?

本文关键字:何重载 object 重载 运算符      更新时间:2023-10-16

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

您返回对您的物品的引用,类似于:

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

运算符的一般声明(它应该是一个类成员函数)如下

ObjectElementType & operator []( size_t );

下标运算符通常成对出现:-

T const& operator[] (size_t ) const;   
T&       operator[] (size_t );  // This enables object[a] = b on non-const object