C++ 标准将使用下标的表达式定义为后缀表达式。 AFAIK,这个运算符总是带有两个参数(第一个是指向 T 的指针,另一个是枚举或整数类型)。因此它应该符合二元运算符的资格。
那么问题来了,什么是下标运算符?它是一元还是二进制?当然,它不是一元的,因为它在 5.3 美元中没有提到(至少是直截了当的)。
当标准提到它在后缀表达式上下文中的用法时,这意味着什么?
最佳答案
我倾向于同意你的观点,operator[]
是最严格意义上的二元运算符,因为它确实需要两个参数:对对象的(可能是隐式的)引用,以及某种其他类型的值(不一定是枚举或整数)。但是,由于它是一个括号运算符,您可能会说标记序列 [x]
(其中 x
可以是任何有效的下标表达式)符合后缀一元的条件抽象意义上的运算符;想想柯里化(Currying)。
此外,例如,您不能重载全局operator[](const C&, size_t)
。编译器提示 operator[]
必须是非静态成员函数。
关于c++ - 下标运算符后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4302142/