Data una classe:Come funziona l'operatore << sovraccarico?
struct employee {
string name;
string ID;
string phone;
string department;
};
Come funziona il seguente lavoro di funzione?
ostream &operator<<(ostream &s, employee &o)
{
s << o.name << endl;
s << "Emp#: " << o.ID << endl;
s << "Dept: " << o.department << endl;
s << "Phone: " << o.phone << endl;
return s;
}
cout << e;
produce formattato uscita per un dato employee e
.
uscita Esempio:
Alex Johnson
Emp#: 5719
Dept: Repair
Phone: 555-0174
non riesco a capire come funziona la funzione ostream. Come ottiene il parametro "ostream & s"? Come sovraccaricare l'operatore "< <" e come funziona l'operatore < <? Come può essere usato per scrivere tutte le informazioni su un dipendente? Qualcuno può rispondere a queste domande in parole povere?
operatori overload sono zucchero principalmente sintattico per una chiamata di funzione, l'espressione 'cout << * itr' per esempio equivale a dire' operator << (cout, * itr) ', e infatti usare questa sintassi funziona esattamente allo stesso modo. – user657267
Sei stanco di imparare queste cose da un libro. –
Come nota a margine: la firma del sovraccarico dell'operatore di uscita dovrebbe essere "ostream & operator << (ostream & s, const employee & o)" e tutte le funzioni getter dovrebbero essere anche 'const', poiché non vi è alcun cambiamento nel' Dipendente 'istanza. –