User Tools

Site Tools


cpp:copy_constructors

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
cpp:copy_constructors [2019/03/06 20:06] – [Δημιουργία κατασκευαστών αντιγραφέων] gthanoscpp:copy_constructors [2019/04/19 09:37] – [Ορισμός ενός κατασκευαστή αντιγραφέα] gthanos
Line 26: Line 26:
 Ένας κατασκευαστής αντιγραφέας για την κλάση Rectangle θα μπορούσε να είναι ο εξής: Ένας κατασκευαστής αντιγραφέας για την κλάση Rectangle θα μπορούσε να είναι ο εξής:
  
 +<code cpp>
 +Rectangle::Rectangle(const Rectangle &r) {
 +  width = r.width; height = r.height;
 +}
 +</code>
 +ή ο παρακάτω
 <code cpp> <code cpp>
 Rectangle::Rectangle(const Rectangle &r) { Rectangle::Rectangle(const Rectangle &r) {
Line 32: Line 38:
 </code> </code>
  
-Η μεταβλητή //r// δηλώνεται ως //const// διότι κατά την εκτέλεση του κατασκευαστή το αντικείμενο //r// δεν θα μεταβληθεί. Συνολικά η κλάση //Rectangle// διαμορφώνεται ως εξής:+Στη 2η περίπτωση, η μεταβλητή //r// δηλώνεται ως //const// διότι κατά την εκτέλεση του κατασκευαστή αντιγραφέα το αντικείμενο //r// δεν μεταβάλλεται. Συνολικά η κλάση //Rectangle// διαμορφώνεται ως εξής:
  
 <code cpp Rectangle.cpp> <code cpp Rectangle.cpp>
Line 78: Line 84:
  
 <WRAP center round tip 80%> <WRAP center round tip 80%>
-Εάν δεν ορίσετε ένα δικό σας κατασκευαστή αντιγραφέα ο //compiler// δημιουργεί τον //default copy constructor// αντιγράφοντας τα περιεχόμενα του αρχικού αντικειμένου στο νέο πεδίο προς πεδίο.+Εάν δεν ορίσετε ένα δικό σας κατασκευαστή αντιγραφέα ο //compiler// δημιουργεί τον //default copy constructor//. Ο //default// αντιγράφει τα περιεχόμενα του αρχικού αντικειμένου στο νέο πεδίο προς πεδίο.
 </WRAP> </WRAP>
  
Line 226: Line 232:
 Για να αποφύγετε την παραπάνω συμπεριφορά θα πρέπει να ορίσετε τον δικό σας κατασκευαστή αντιγραφέα που κάνει τα εξής: Για να αποφύγετε την παραπάνω συμπεριφορά θα πρέπει να ορίσετε τον δικό σας κατασκευαστή αντιγραφέα που κάνει τα εξής:
   - Δημιουργεί ένα νέο αντικείμενο τύπου //Point//.   - Δημιουργεί ένα νέο αντικείμενο τύπου //Point//.
-  - Αντιγράφει τα περιεχόμενα του παλιού στο νέο.+  - Αντιγράφει τα περιεχόμενα του παλιού αντικειμένου στο νέο.
  
 Ο προτεινόμενος κατασκευαστής αντιγραφέας δίνεται παρακάτω: Ο προτεινόμενος κατασκευαστής αντιγραφέας δίνεται παρακάτω:
cpp/copy_constructors.txt · Last modified: 2022/05/12 19:41 by gthanos