Funzioni membro speciali (C++)
In C++ sono definiti diversi tipi di funzioni che possono essere dichiarate solo come membri di classe e che vengono denominate funzioni membro speciali. Tali funzioni influiscono sul modo in cui gli oggetti di una classe specificata vengono creati, distrutti, copiati e convertiti in oggetti di altri tipi. Un'altra proprietà fondamentale di molte di queste funzioni è la possibilità di essere chiamate in modo implicito (dal compilatore).
Le funzioni membro speciali descritte in questa sezione sono le seguenti:
Costruttori. Abilitano l'inizializzazione automatica di oggetti.
Distruttori. Eseguono la pulizia dopo che gli oggetti vengono eliminati in modo esplicito o implicito.
Funzioni di conversione. Eseguono la conversione tra tipi di classe e altri tipi.
Funzione operator new. Alloca dinamicamente spazio in memoria.
Funzione operator delete. Libera lo spazio di memoria allocato tramite l'operatore new.
Operatore di assegnazione (operatore=). Utilizzata quando si effettua un'assegnazione.
Gli elementi nell'elenco precedente possono essere definiti dall'utente per ogni classe.
Le funzioni membro speciali rispettano le stesse regole di accesso di altre funzioni membro. Le regole di accesso sono descritte in Controllo dell'accesso ai membri. Nella tabella seguente viene riepilogato il comportamento delle funzioni Friend e membro.
Riepilogo del comportamento delle funzioni
Tipo funzione |
La funzione viene ereditata da una classe base? |
La funzione può essere virtuale? |
La funzione può restituire un valore? |
La funzione è una funzione Friend o membro? |
Il compilatore genererà una funzione se l'utente non la genera? |
---|---|---|---|---|---|
Costruttore |
No |
No |
No |
Membro |
Sì |
Costruttore di copia |
No |
No |
No |
Membro |
Sì |
Distruttore |
No |
Sì |
No |
Membro |
Sì |
Conversion |
Sì |
Sì |
No |
Membro |
No |
Assegnazione (operator=) |
No |
Sì |
Sì |
Membro |
Sì |
new |
Sì |
No |
void* |
Membro statico |
No |
elimina |
Sì |
No |
void |
Membro statico |
No |
Altre funzioni membro |
Sì |
Sì |
Sì |
Membro |
No |
Funzioni Friend |
No |
No |
Sì |
Friend |
No |