C++标准使用下标作为后缀表达式来定义表达式。 AFAIK,此运算符始终采用两个参数(第一个是指向T的指针,另一个是枚举或整数类型)。因此,它应该符合二进制运算符的条件。

但是MSDNIBM并未将其列为二进制运算符。

所以问题是,什么是下标运算符?是一元还是二进制?可以肯定的是,它不是一元的,因为它在$ 5.3中没有提到(至少没有区别)。

当标准在后缀表达式的上下文中提及其用法时,这是什么意思?

最佳答案

我倾向于在最严格的意义上同意您的观点,因为operator[]确实接受两个参数:一个(可能是隐式的)对一个对象的引用,以及其他类型的值(不一定是枚举或整数) )。但是,由于它是一个括号运算符,因此您可以说标记序列[x](其中x可以是任何有效的下标表达式)在抽象意义上可以看作是后缀一元运算符;觉得小气。

另外,例如,您不能重载全局operator[](const C&, size_t)。编译器抱怨operator[]必须是一个非静态成员函数。

关于c++ - 下标运算符后缀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4302142/

10-11 11:24
查看更多