Crea un oggetto assegnando valori di default (stabiliti dallo sviluppatore della classe).
Implicitamente richiamato dal compilatore per l’inizializzazione di default.
In mancanza di costruttori della classe l’inizializzazione viene predisposta dal compilatore (se invece nellla classe è definito almeno un costruttore il compilatore non predispone alcuna inizializzazione).
E’ opportuno definire sempre un costruttore con zero argomenti che può essere ottenuto anche come caso particolare di costruttore con più argomenti e parametri di default.
Crea un oggetto assegnando valori passati al costruttore (stabiliti dall’utente della classe).
Crea un oggetto a partire da un altro oggetto della classe (i valori delle variabili membro vengono copiati).
Signature: C (const C &)
E’ implicitamente richiamato:
In mancanza della definizione del costruttore di copia, il compilatore richiama un costruttore di copia di default.
Il costruttore di copia di default esegue una copia superficiale dell’oggetto (copia bit a bit) limitata alla sola parte base.
Nel caso esista una estensione dinamica il costruttore di copia deve essere esplicitamente definito dal progettista della classe.
Funzioni membro delle classi
Altre funzioni collegate alle classi
Lettura delle variabili membro (acquisizione dello stato dell’oggetto)
T getVM() const { return VM;}
Posizionamento dei valori delle variabili membro (posizionamento dello stato dell’oggetto)
void setVM(T value) { VM=value;}
Nella chiamata di una funzione membro f il compilatore introduce un primo parametro nascosto che è l’indirizzo dell’oggetto proprio a cui f viene applicata.
Tale parametro e’ un puntatore costante il cui nome è this.
// Prototipo della funzione f
T f(...);
//Viene trasformato dal compilatore in:
T f(C* const this, ...);
All’atto della chiamata &c viene ricopiato in this e attraverso tale puntatore la funzione opera sull’oggetto proprio
// chiamata della funzione f
c.f(...); // oppure p->f();
//Viene trasformata dal compilatore in:
f(&c, ...);
Il valore di this all’interno della funzione non può essere modificato (this e’ un puntatore costante)
this è implicitamente utilizzato nel codice della funzione
int get_n() const { return n;} // inline
int get_n() const { return this->n;} //inline
this deve essere esplicitamente utilizzato:
return *this;
);return this;
).1. Strutture e typedef. Record in C/C++: Concetti Base
4. Puntatori a tipi di dato strutturati. Allocazione Dinamica
5. Puntatori: aspetti avanzati
7. Asserzioni
8. Gestione delle eccezioni. Concetti base
9. Programmazione modulare: concetti base
10. Programmazione Modulare: Meccanismi e Strumenti a supporto in C/C++
12. Esercitazione: Strutture Dati Pila e Coda
13. Esercitazione. Strutture Dati: Lista Concatenata
14. Meccanismi di Incapsulamento in C++ Namespaces
15. Programmazione orientata agli oggetti. Introduzione