Bracket操作方法可以为多个操作符重载吗?(cpp),我认为Brack操作是一个单独的操作符,但我看到cpp试卷答案中说“Bracket operation method can be overloaded both for single operator and multiple operators”
的项目。你能不能帮帮我?
答案 0 :(得分:2)
虽然你可以对“下标”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}]
之类的东西工作(等待编译器支持。)