Le funzioni amiche e il sovraccarico degli operatori
sono due concetti avanzati relativi alle classi. Le Funzioni Amiche
hanno accesso completo ad ogni membro della classe. Il Sovraccarico
degli Operatori permette di definire nuovi significati per gli
operatori pre-costruiti e come si relazionano agli oggetti della
propria classe. Come vedremo i due concetti possono essere usati
assieme.
Presentare il programma Roditore Amico
Il programma Roditore Amico crea un oggetto
Roditore. Quindi usa una funzione amica, la quale è in grado
di accedere direttamente ai dati privati che sono immagazzinati, come
il nome del roditore e quindi mostrarlo a schermo. Infine il
programma mostra l'oggetto Roditore inviandolo come output
standard. Il codice del programma è il seguente:
//Roditore amico
//Dimostra l'uso delle
funzioni amiche e sovraccarico degli operatori
#include <iostream>
#include <string>
using namespace std;
class Roditore
{ //le funzioni amiche sono
rese come globali per la classe Roditore
friend void Spia(const
Roditore& aRoditore);
friend ostream&
operator <<(ostream& os, const Roditore& aRoditore);
public:
Roditore (const string&
nome= “ “): m_Nome(nome){}
private:
string m_Nome;
};
void Spia(const Roditore&
aRoditore);
ostream& operator
<<(ostream& os, const Roditore& aRoditore);
int main()
{
Roditore ctopo(“Topolino”);
cout << “Chiama
Spia() per accedere a ctopo dati privati, m_Nome:\n”;
Spia(ctopo);
cout << “\n Invia
oggetto ctopo a cout con operatore << :\n”;
cout << ctopo;
return 0;
}
// funzione amica globale
che può accedere a tutti i membri dell'oggetto Roditore
void Spia(const Roditore&
aRoditore)
{ cout <<
aRoditore.m_Nome << endl;
}
// funzione amica globale
che può accedere a tutti i membri dell'oggetto Roditore e
// sovraccarica operatore <<
in modo da inviare oggetto Roditore a cout
ostream& operator
<<(ostream& os, const Roditore& aRoditore)
{
os << “Oggetto
Roditore - ”;
os << “m_Nome: ”
<< aRoditore.m_Nome;
return os;
}
Nessun commento:
Posta un commento