c++ - 为什么 operator[] 只接受一个参数?

标签 c++ operator-overloading subscript-operator

<分区>

有很多与 operator[] 相关的问题只接受一个参数,但我找不到一个真正说明原因的问题。

例如,让 matrix[0, 3] 调用 ElementT& operator[](SizeT x, SizeT y) 似乎是一种非常自然的语言扩展功能。

是否有任何特殊原因(例如不兼容)导致这种语法不在语言中,或者除了缺乏动机之外还有什么其他原因实际上阻止了它被添加?

(注意:这已被标记为重复,但事实并非如此。这个问题是“为什么语言中没有这种语法?”而不是“我该如何解决这个问题?”。如前所述,有有很多问题可以解决后者,但没有一个可以回答前者。)

最佳答案

不仅(在此特定上下文中很少使用)逗号运算符需要很长的过渡期才能实现标准化,而且我们已经有了人们使用的另一种解决方案:

ElementT& operator()(SizeT x, SizeT y)

野外的一些矩阵库使用这种形式。它有点难看,但欢迎使用 C++。 :)

关于c++ - 为什么 operator[] 只接受一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315761/

相关文章:

c++ - 使用logging::init_from_stream boost 日志格式单个属性

c++ - 在 Eclipse 环境中使用共享库 (SDSoC)

c++ - 获取Objective-C方法的地址

c++ - 错误 : assignment of member ‘x::x’ in read-only object

c++ - 具有 std::map 成员变量的类的下标运算符

c++ - 将 32 位 float 映射到 32 位整数

c++ - 我是否需要重载类的强制转换运算符?

c++ - != 在 C++20 中从 == 自动生成?

c++ - 如何重载下标运算符以返回一个可以是左值的可选值?

C++ 重载运算符 []