==== 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 procedurale&#classi]]