appunti3s:funzioni_friend
Differences
This shows you the differences between two versions of the page.
Previous revision | |||
— | appunti3s:funzioni_friend [2020/06/08 22:19] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ==== 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' | ||
+ | < | ||
+ | class ContoCorrente | ||
+ | { | ||
+ | friend fun(const ContoCorrente& | ||
+ | } | ||
+ | </ | ||
+ | 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' | ||
+ | |||
+ | < | ||
+ | void funz(ContoCorrente& | ||
+ | //funzione, usando reference</ | ||
+ | < | ||
+ | funz(mioConto); | ||
+ | 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: |