Alcuni operatori non possono essere sovraccaricati come membri della classe. Uno di questi esempi sono gli operatori di spostamento bit a bit utilizzati per gli stream vedere qui per esempio . La ragione di ciò (a quanto ho capito) sembra essere che l'operando del sito di sinistra è quello per cui si definisce il comportamento e non è possibile definire il comportamento per i flussi integrati. Per favore correggimi se sbaglio.
Penso che sarebbe utile definire questi sovraccarichi come membri della classe, perché probabilmente hanno bisogno di accedere ai dati privati. Certo, c'è friend
, ma sembra essere più una soluzione alternativa.
Questa è più una domanda ipotetica, ma perché non scambiare il significato di >>
e <<
quindi?
obj >> std::cout;
obj << std::cin;
In questo modo, l'intera operazione avviene dal punto di vista dell'oggetto, non del flusso. Il sovraccarico può essere eseguito come una funzione membro, poiché l'oggetto è l'operando sulla sinistra. Sarebbe possibile?
Suppongo che ci siano molte cose che potrebbero rompersi, come la leggibilità per i principianti dato che tutti sono abituati all'altra direzione. Quali altre cose farebbe questa pausa?