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 [2020/04/14 15:32] – [Ορισμός ενός κατασκευαστή αντιγραφέα] gthanoscpp:copy_constructors [2020/04/14 16:00] – [Μια πιο σύνθετη περίπτωση] gthanos
Line 137: Line 137:
 </WRAP> </WRAP>
  
-==== Άλλη περίπτωση κλήση Copy Constructor ====+==== Άλλη περίπτωση κλήσης κατασκευαστή αντιγραφέα (copy-constructor) ====
  
-Μία άλλη περίπτωση κατά την οποία θα κληθεί o κατασκευαστής αντιγραφέας είναι η παρακάτω. Εδώ η δήλωση της μεταβλητής r2 συμπίπτει με την αρχικοποίηση του αντικειμένου. Σε αυτή την περίπτωση καλείται ο κατασκευαστής αντιγραφέας με όρισμα το //r1//+Μία άλλη περίπτωση κατά την οποία θα κληθεί o κατασκευαστής αντιγραφέας είναι η παρακάτω. 
  
 <code cpp CopyRectangle.cpp> <code cpp CopyRectangle.cpp>
Line 149: Line 149:
 } }
 </code> </code>
 +
 +Εδώ η δήλωση της μεταβλητής r2 συμπίπτει με την αρχικοποίηση του αντικειμένου. Σε αυτή την περίπτωση καλείται ο κατασκευαστής αντιγραφέας με όρισμα το //r1//
  
 <WRAP center round tip 80%> <WRAP center round tip 80%>
Line 161: Line 163:
 } }
 </code> </code>
-Για τον μεταγλωττιστή όμως οι κώδικες είναι διαφορετικοί. Στην πρώτη περίπτωση καλείται ο κατασκευαστής αντιγραφέας (//copy constructor//), ενώ στη 2η περίπτωση καλείται ο //default// κατασκευαστής και στη συνέχεια γίνεται ανάθεση των τιμών των πεδίων του //r1// στα πεδία του //r2// (πεδίο προς πεδίο).+Για τον μεταγλωττιστή όμως οι δύο κώδικες είναι διαφορετικοί. Στην πρώτη περίπτωση καλείται ο κατασκευαστής αντιγραφέας (//copy constructor//), ενώ στη δεύτερη περίπτωση καλείται ο //default// κατασκευαστής και στη συνέχεια γίνεται ανάθεση των τιμών των πεδίων του //r1// στα πεδία του //r2// (πεδίο προς πεδίο).
 </WRAP> </WRAP>
  
Line 220: Line 222:
     Rectangle();     Rectangle();
     ~Rectangle();     ~Rectangle();
-    Rectangle(Rectangle &r); 
     void setWidth(int w);     void setWidth(int w);
     void setHeight(int h);     void setHeight(int h);
Line 269: Line 270:
  
 int main() { int main() {
-  Point p{10,5};+  Point p{5,5};
   Rectangle r1{5,6,p};     Rectangle r1{5,6,p};  
   Rectangle r2 = r1;   Rectangle r2 = r1;
 +  Rectangle r3(r1);
      
   moveOrigin(r1, 1,-1);   moveOrigin(r1, 1,-1);
cpp/copy_constructors.txt · Last modified: 2022/05/12 19:41 by gthanos