如何重载运算符[]以允许`object[a]=b`
How can I overload operator[] to allow for `object[a] = b`?
可以重载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
相关文章:
- 继承函数的重载解析
- 你能重载对象变量名本身返回的内容吗
- 从父命名空间重载类型
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 重载操作程序时出错>>用于类中的字符串 memebr
- 一个关于在C++中重载布尔运算符的问题
- 不同翻译单元中不可重载的非内联函数定义
- 为什么使用SFINAE而不是函数重载
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 将重载的成员函数传递给函数模板
- c++:可变模板和函数重载
- 重载元组索引运算符-C++
- object = -object 不编译,尽管运算符重载
- 重载运算符C++:Object=Object*Object
- 重载虚拟方法与非虚拟方法有何不同
- 如何重载运算符[]以允许`object[a]=b`
- char(*)[20]与char(*Object::variable)[20]有何不同
- C++:重载"pointer to object" * 运算符