c++ - 下标运算符后缀

标签 c++ binary subscript

C++ 标准将使用下标的表达式定义为后缀表达式。 AFAIK,这个运算符总是带有两个参数(第一个是指向 T 的指针,另一个是枚举或整数类型)。因此它应该符合二元运算符的资格。

但是MSDNIBM没有将其列为二元运算符。

那么问题来了,什么是下标运算符?它是一元还是二进制?当然,它不是一元的,因为它在 5.3 美元中没有提到(至少是直截了当的)。

当标准提到它在后缀表达式上下文中的用法时,这意味着什么?

最佳答案

我倾向于同意你的观点,operator[] 是最严格意义上的二元运算符,因为它确实需要两个参数:对对象的(可能是隐式的)引用,以及某种其他类型的值(不一定是枚举或整数)。但是,由于它是一个括号运算符,您可能会说标记序列 [x](其中 x 可以是任何有效的下标表达式)符合后缀一元的条件抽象意义上的运算符;想想柯里化(Currying)。

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

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

相关文章:

java - 向 JFrame 上图形中的字符串添加下标和字体

swift - '下标'不可用 : cannot subscript String with a CountableClosedRange<Int>, 讨论见文档注释

python - 如何在python中运行c代码

c++ - 打印字节的正确类型转换

c - 从二进制文件读取结构体 (C)

java - 如何将 JTextArea 上的文本转换为 ascii 二进制文件并在 java 上转换回来

c++ - 管道在 Windows 7 上的 WinApi 中不起作用,但在 Windows 10 上起作用

c++ - 如何在 C++ 字符串中填充一个部分?

c - 尝试用随机 32 位二进制数填充数组

sql-server - 特殊字符(下标)未正确显示