我的问题是如何重载operator [] []? 此外,当我打电话给运营商的分机时,幕后发生了什么?
答案 0 :(得分:2)
正确的术语是运算符重载。
要实现某种[][]
,您需要为第一个[]
返回一个代理对象,然后运营商[]
再次过载。
()()
的链可以用类似的方式完成。
对于幻灯片操作符类型,请参阅What is the "-->" operator in C++?
答案 1 :(得分:1)
运算符[][]...
,()()...
和-->
(最后,我假设你并不是指--->
)实际上不是c ++运算符,而是c ++运算符的组合。
例如[][][]
,将[]
应用于左值,并返回某个左值,再次应用[]
,然后第三次再次应用[][][]
。因此,没有实际的[]
,但它只是int a[2] = {0,1};
int b[3] = {2,3,4};
int *c[2] = {a,b};
c[0][1]; // [0] first extracts 'a' from 'c', then [1] extracts 1 from a (the value in the second index).
应用了3次。
()()()
-->
同样如此。
--
也遵循相同的想法,除了这里它不是同一运算符的重复组合,而是>
的组合,它将返回左值然后将其减1,和 Public Class Map
Implements INotifyPropertyChanged
Private _wages As Decimal
Property Wages As Decimal
Get
Return _wages
End Get
Set(value As Decimal)
Debug.Print("Event Raised: " & _wages & " " & value)
_wages = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Wages))
End Set
End Property
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
,它将比较左手侧和右手侧。