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
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
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. 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 didefault e perciò questo va definito esplicitamente come metodo pubblico all’interno della classe. 
Infine in presenza dicostruttori con più argomenti, essi non vengono invocati automaticamente e pertanto la creazione di un oggetto devecontenere la chiamata al proprio costruttore.


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::myClass() {
    //Costruttore di default, se ha corpo nullo, è lo stesso che il compilatore mette a
    //disposizione della classe, qualora essa ne risulti sprovvista. Può servire
    //all’inizializzazione di variabili membro della classe stessa.
    var2 = 0;
}

myClass::myClass(T myVar) {
    //Costruttore con argomenti, sfrutta il meccanismo della sovrapposizione dei metodi
    //(overloading) e
    ...
}

consente l'inizializzazione di variabili. var = myVar;}

......

COSTRUTTORE DI COPIA

I costruttori di copia sono particolari costruttori, che vengono eseguiti quando un oggetto è creato, appunto, per copia. Questo avviene:

  • alla definizione di un oggetto contestualmente alla sua creazione, mediante un oggetto esistente dello stesso tipo;
  • passando per valore un argomento ad una funzione;
  • restituendo per valore un oggetto mediante una funzione.
Dettagli
Publisher
A.A. 2012-2013
3 pagine
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.