如何重载operator [] []

时间:2017-10-10 11:58:57

标签: c++ operator-overloading operators

我的问题是如何重载operator [] []? 此外,当我打电话给运营商的分机时,幕后发生了什么?

2 个答案:

答案 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 ,它将比较左手侧和右手侧。