View Full Version : [C++] overloading operatori di stream
86pietro
25-04-2018, 19:54
Per una classe Persona (string Nome, char* Cognome, char CF, int Età) ho scritto l'overloading degli operatori di stream in questo modo
https://78.media.tumblr.com/355e4c00e8470fbd2452123afd3a555d/tumblr_p7r89t8imV1re64jjo1_500.png
Non ho capito l'utilità di ritornare i valori in e out, le funzioni lavorano anche senza
In questo modo puoi effettuare il chaining:
cout << "hello" << "world";
86pietro
26-04-2018, 14:53
In questo modo puoi effettuare il chaining:
cout << "hello" << "world";
Ma questo posso farlo anche senza return in e return out;
Ma questo posso farlo anche senza return in e return out;
No non puoi.
void operator<<(ostream & os, const Persona & p)
{
os << p.Nome;
}
Persona p1;
Persona p2;
cout << p1 << p2;
non è valido.
86pietro
27-04-2018, 11:54
Guarda, ti assicuro che me lo fa passare lo stesso
https://78.media.tumblr.com/24830550b63bcfc3dad1073f0fdf0ef4/tumblr_p7r89t8imV1re64jjo2_r1_540.png
Sì, ma non è corretto (che compilatore usi? hai i warning attivi? configurazione debug/release?).
Una funzione dichiarata non void deve restituire esplicitamente qualcosa. Se il return viene omesso, il risultato è "undefined behavior" ed è categoricamente sconsigliabile farci affidamento: può funzionare sì oppure no oppure solo in certe circostanze ma è assolutamente a caso.
86pietro
27-04-2018, 15:10
Giusto, non avevo considerato il tipo di ritorno
Grazie mille
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.