==== Funzioni esterne friend ====
A volte si ha la necessità di elaborare contemporaneamente due oggetti di tipo diverso, ma non è possibile creare funzioni che siano membro di due diverse classi.
Queste funzioni possono essere dichiarate anche fuori della classe, ma in tal caso avrebbero diritto di accedere solo agli elementi //public//. Per operare anche sui dati //private// degli oggetti, devono essere dichiarate //friend// all'interno della classe.
class ContoCorrente
{
friend fun(const ContoCorrente& c);
}
Questo tipo di funzioni non possono essere essere invocate su un oggetto (con la dot notation) come le funzioni membro, quindi non possiedono nemmeno il puntatore //this//. Le funzioni di questo tipo devono necessariamente ricevere l'oggetto in copia o attraverso i reference. In tal caso si può scrivere:
void funz(ContoCorrente& c); // dichiarazione esterna della
//funzione, usando reference
funz(mioConto); // chiamata della funzione
Tuttavia invece di usare le funzioni friend potrebbe essere possibile definire una classe annidata, o un oggetto membro.
* esempio
* esempio di distruttore (necessario solo quando…)
* esempio di overloading (nello stesso namespace)
* esempio di funzione membro che usa o restituisce references ad oggetti
* esempio di costruttore di copia
continua qui...
[[appunti3s:programmazione proceduraleclassi]]