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…

classi

  • appunti3s/funzioni_friend.txt
  • Last modified: 2018/04/25 07:55
  • (external edit)