过载支架操作

overloaded bracket operation

本文关键字:操作      更新时间:2023-10-16

是否可以为多个运算符重载Bracket运算方法?(cpp),我认为Brack运算是一个单独的运算符,但我在cpp试卷的答案中看到了“Bracket operation method can be overloaded both for single operator and multiple operators”。你能帮我吗?

虽然"subscript"operator[]可以有多个重载,但它们都必须只带一个参数(并且该参数不能有默认值):

struct Foo {
    R1 operator[](T)               { /* ... */ }
    R2 operator[](S const &) const { /* ... */ }
    void operator[](U *)           { /* ... */ }
};

原因很简单:表达式a[n]是有效的,但a[m,n]不是有效的二进制表达式(它是完全不同的),a[]在该上下文中也不是有效的。

使用C++11的初始值设定项列表,您可以使类似a[{1,2,3}]的东西发挥作用,尽管(等待编译器支持)