Estratto del documento

Costruttore di copia

Per capire fino in fondo che cosa è un costruttore di copia, dobbiamo preoccuparci prima di comprendere che cos’è un costruttore. Quando un oggetto, sia esso istanza di un tipo di dato nativo oppure astratto, viene creato, si dice comunemente che quell’oggetto è stato costruito. La costruzione di un oggetto può avvenire in momenti diversi in base alla categoria cui l’oggetto stesso appartiene. In ogni caso, durante la sua creazione, spesso si rende necessario effettuare delle operazioni specifiche.

Infatti, se gli oggetti sono istanze di una classe, il C++ mette a disposizione un mezzo molto potente che consente di definire le operazioni effettuabili sull’oggetto stesso, funzioni che il programma riconosce come tali, a partire dalla sua creazione. Questi prendono il nome di costruttori e hanno l’onere di inizializzare i membri e di mettere a disposizione tutte le risorse necessarie per la creazione dell’oggetto.

Regole generali sui costruttori

Generalmente i costruttori devono sottostare alle seguenti regole:

  • Devono avere lo stesso nome della classe;
  • Per essi non deve essere specificato il tipo di ritorno (nemmeno void);
  • Possono ammettere argomenti e argomenti di default, i costruttori senza argomenti sono detti costruttori di default;
  • Possono esistere più costruttori utilizzando il meccanismo di overloading, il compilatore riconosce automaticamente quale invocare in base agli argomenti;
  • Devono essere dichiarati nella parte pubblica della classe, poiché sono sempre richiamati dall’esterno della classe alla quale appartengono.

I costruttori non sono obbligatori, infatti nel caso in cui non ne venga specificato uno, il compilatore automaticamente ne crea uno di default avente corpo nullo, tuttavia è sempre buona norma definirne uno. Se invece la classe possiede almeno un costruttore con argomenti, allora il C++ non mette a disposizione alcun costruttore di default e perciò questo va definito esplicitamente come metodo pubblico all’interno della classe. Infine, in presenza di costruttori con più argomenti, essi non vengono invocati automaticamente e pertanto la creazione di un oggetto deve contenere la chiamata al proprio costruttore.

Esempio di dichiarazione in C++

myClass.h
class myClass {
public:
    myClass(); // costruttore di default
    myClass(T myVar); // costruttore con un argomento
    myClass(T myVar, T myVar2 = 0); // costruttore con due argomenti, uno di default
    myClass(const myClass&); // costruttore di copia
private:
    T var;
    T var2;
};

myClass.cpp
myClass::myClass() {
    // Costruttore di default, se ha corpo nullo, è lo stesso che il compilatore mette a
    // disposizione della classe,
Anteprima
Vedrai una selezione di 1 pagina su 3
Programmazione I -  Polimorfismo e funzioni virtuali Pag. 1
1 su 3
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F di informazioni apprese con la frequenza delle lezioni di Programmazione 1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Vittorini Valeria.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community