PDA

View Full Version : [c++]Costruttori


Sabonis
04-07-2008, 10:17
Supponiamo di avere una classe Point.
Che differenza c'è fra un costruttore di questo tipo:

Point(int x, int y){
x_ = x;
y_ = y;
}

e un costruttore di questo tipo:
Point(int x, int y):
x_(x),
y_(y){


}

Sono del tutto equivalenti? Se non lo sono quando si usa il primo e quando il secondo?

vizzz
04-07-2008, 10:24
si sono equivalenti...credo sia più una questione estetica che funzionale :)

>|HaRRyFocKer|
04-07-2008, 22:14
sono equivalenti, anche se il secondo caso è più "logicamente" vicino al concetto di costruzione di un oggetto... cmq hai sbagliato sezione credo... :D

Programmazione Rulez! :O

-Slash
04-07-2008, 23:49
è uguale, ma da quello che ricordo devi usare obbligatoriamente il secondo per inizializzare dati costanti e per inizializzare costruttori di classi base se fai l'ereditarietà

marco.r
06-07-2008, 19:18
Supponiamo di avere una classe Point.
Che differenza c'è fra un costruttore di questo tipo:

Point(int x, int y){
x_ = x;
y_ = y;
}

e un costruttore di questo tipo:
Point(int x, int y):
x_(x),
y_(y){


}

Sono del tutto equivalenti? Se non lo sono quando si usa il primo e quando il secondo?
Nel primo caso infatti prima le variabili x_ e y_ vengono inizializzate con il costruttore di default e quindi viene usato l'operatore di assegnamento per copiare il contenuto da x a x_ e da y a y_. Nel Secondo caso invece viene invocato direttamente il costruttore con un argomento.
Avendo a che fare con interi in pratica non cambia nulla perche' il costruttore di default non fa nulla e quello con argomento effettua l'assegnamento. Se tu pero' al posto di int avessi oggetti piu' complessi la differenza potrebbe notarsi.