CPP 运算符重载操作数位置 [] 与 ==
cpp operator overload operand position [] vs ==
char& operator[]
与bool operator==
有何不同?一个将操作数放在[]
之间,而另一个将操作数放在==
之后。它如何知道将操作数放在哪里?左括号和右括号有什么特别的技巧吗?
它怎么知道将操作数放在哪里?
嗯。因为标准是这么说的?
§11.5.5 下标 [over.sub]/1:
operator[]
应是一个只有一个参数的非静态成员函数。它实现了下标语法后缀表达式[expr-or-braced-init-list]
因此,如果存在
T::operator[](T1)
并且运算符被重载解析机制 ([over.match.best]( 选为最佳匹配函数,则下标表达式x[y]
被解释为类型为T
类型的类x
对象的x.operator[](y)
。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- CPP 运算符重载操作数位置 [] 与 ==
- 关于重载 -> 运算符中 const 关键字的特定位置的问题
- 为什么在递增后使用 [] 运算符访问指针数组会返回错误地址的当前内存位置
- 在C++中,为什么代码示例在重载运算符时经常使用内存位置
- 是STD :: Vector,由于其分配运算符移动其成员的位置,因此是一种非常规类型
- 是否可以使用运算符new从堆以外的其他位置进行分配
- 如果我写一个新的展示位置?我应该如何编写普通运算符删除
- C++删除运算符如何查找多态对象的内存位置
- 重载运算符 '=' 和 [] 以写入文件中的位置
- 在 65536 位置访问迭代器的指针运算符会导致段错误
- 复制 ctor 和复制赋值运算符 const 关键字位置
- 带有Overload[]运算符的C++MyInteger类,因此索引在位置i返回数字
- 运算符重载实现:0xC0000005:读取位置存在访问冲突
- 运算符重载-如何更改对象位置