C++标准使用下标作为后缀表达式来定义表达式。 AFAIK,此运算符始终采用两个参数(第一个是指向T的指针,另一个是枚举或整数类型)。因此,它应该符合二进制运算符的条件。
但是MSDN和IBM并未将其列为二进制运算符。
所以问题是,什么是下标运算符?是一元还是二进制?可以肯定的是,它不是一元的,因为它在$ 5.3中没有提到(至少没有区别)。
当标准在后缀表达式的上下文中提及其用法时,这是什么意思?
最佳答案
我倾向于在最严格的意义上同意您的观点,因为operator[]
确实接受两个参数:一个(可能是隐式的)对一个对象的引用,以及其他类型的值(不一定是枚举或整数) )。但是,由于它是一个括号运算符,因此您可以说标记序列[x]
(其中x
可以是任何有效的下标表达式)在抽象意义上可以看作是后缀一元运算符;觉得小气。
另外,例如,您不能重载全局operator[](const C&, size_t)
。编译器抱怨operator[]
必须是一个非静态成员函数。
关于c++ - 下标运算符后缀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4302142/