Φωτογραφία ΓΕΩΡΓΙΟΣ ΠΑΤΣΙΟΥΡΑΣ
Κλάση Circle σελ. 120
από ΓΕΩΡΓΙΟΣ ΠΑΤΣΙΟΥΡΑΣ - Tuesday, 1 May 2012, 8:48 PM
 

Διαβάζοντας προσεκτικά τις δυο κλάσεις Point και Circle σκόνταψα στο σημείο της κλάσης όπου ορίζουμε τον constructor (σελ 120):

public Circle(Point c, int r){

center = new Point(c);

radius = r;

}

Προβληματίστηκα γιατί θα έπρεπε να δώσουμε στη μεταβλητή κλάσης center τη τιμή new Point(c).

Αντί για new Point(c) αν βάζαμε c θα το καταλάβαινα δηλ. center = c;

Έτσι έγραψα και τις δύο κλάσεις στον IDE Eclipse και είδα ότι ο Compiler επιστρέφει λάθος μεταγλώτισης. Μήπως θα έπρεπε να είναι αυτό που έγραψα λίγο πιο πάνω, γιατί βάζοντας center = c όλα λειτουργούν εντάξει.

Θα παρακαλούσα κάποιος να με διαφωτίσει αν χάνω κάτι.

Ευχαριστώ

 
Φωτογραφία Βασίλης Κόλιας
Απάντηση: Κλάση Circle σελ. 120
από Βασίλης Κόλιας - Tuesday, 1 May 2012, 9:35 PM
 
Στη σελίδα 118 ορίζεται Constructor της Point με παράμετρο μια αναφορά σε αντικείμενο της Point. Πρόκειται για έναν copy constructor που έχει σαν στόχο να αντιγράψει ένα υπάρχον αντικείμενο σε ένα νέο.
Αυτό που γίνεται στην 120 είναι ότι αντί να περάσει το ίδιο το σημείο για τη δημιουργία του κύκλου, προτιμάει να το αντιγράψει και να χρησιμοποιήσει ένα αντίγραφό του.