È perché non è possibile sovraccaricare gli operatori per un tipo di puntatore; è possibile solo sovraccaricare un operatore in cui almeno uno dei parametri (operandi) è di tipo classe o tipo di enumerazione.
Pertanto, se si dispone di un puntatore a un oggetto di un tipo di classe che sovraccarica l'operatore di pedice, è necessario dereferenziare tale puntatore per chiamare l'operatore di pedice sovraccarico.
Nel proprio esempio, a
ha il tipo MyClass*
; questo è un tipo di puntatore, quindi viene utilizzato il puntatore incorporato operator[]
per i puntatori. Quando si dereferenzia il puntatore e si ottiene un MyClass
, si dispone di un oggetto di tipo classe, quindi viene utilizzato il sovraccarico operator[]
.
fonte
2010-05-11 04:17:22
Si potrebbe anche fare 'a [0] [1]' ;-) – fredoverflow