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 revisionBoth sides next revision
cpp:copy_constructors [2017/05/10 07:07] gthanoscpp:copy_constructors [2018/05/07 07:06] – [Ορισμός ενός κατασκευαστή αντιγραφέα] gthanos
Line 24: Line 24:
 ===== Ορισμός ενός κατασκευαστή αντιγραφέα ===== ===== Ορισμός ενός κατασκευαστή αντιγραφέα =====
  
-Ένας κατασκευαστής αντιγραφέας για την κλάση Rectangle ορίζεται ως εξής:+Ένας κατασκευαστής αντιγραφέας για την κλάση Rectangle θα μπορούσε να είναι ο εξής:
  
 <code cpp> <code cpp>
Line 78: Line 78:
  
 <WRAP center round tip 80%> <WRAP center round tip 80%>
-Εάν δεν ορίσετε ένα δικό σας κατασκευαστή αντιγραφέα ο //compiler// δημιουργεί έναν από μόνος του αντιγράφοντας τα περιεχόμενα του αρχικού αντικειμένου στο νέο πεδίο προς πεδίο.+Εάν δεν ορίσετε ένα δικό σας κατασκευαστή αντιγραφέα ο //compiler// δημιουργεί τον //default copy constructor// αντιγράφοντας τα περιεχόμενα του αρχικού αντικειμένου στο νέο πεδίο προς πεδίο.
 </WRAP> </WRAP>
  
-Μία άλλη περίπτωση κατά την οποία θα κληθεί o κατασκευαστής αντιγραφέας είναι η παρακάτω. Εδώ μαζί με την δήλωση της μεταβλητής καλείται ο κατασκευαστής αντιγραφέας του //r1// με όρισμα το //r2//. +Μία άλλη περίπτωση κατά την οποία θα κληθεί o κατασκευαστής αντιγραφέας είναι η παρακάτω. Εδώ η δήλωση της μεταβλητής r2 συμπίπτει με την αρχικοποίηση του αντικειμένου. Σε αυτή την περίπτωση καλείται ο κατασκευαστής αντιγραφέας με όρισμα το //r1//. 
  
 <code cpp CopyRectangle.cpp> <code cpp CopyRectangle.cpp>
Line 103: Line 103:
 } }
 </code> </code>
-Για τον μεταγλωττιστή όμως οι κώδικες είναι διαφορετικοί. Στην πρώτη περίπτωση καλείται ο κατασκευαστής αντιγραφέας (//copy constructor//), ενώ στη 2η περίπτωση καλείται ο //default// κατασκευαστής και στη συνέχεια γίνεται ανάθεση των τιμών των πεδίων του //r1// στα πεδία του //r2//.+Για τον μεταγλωττιστή όμως οι κώδικες είναι διαφορετικοί. Στην πρώτη περίπτωση καλείται ο κατασκευαστής αντιγραφέας (//copy constructor//), ενώ στη 2η περίπτωση καλείται ο //default// κατασκευαστής και στη συνέχεια γίνεται ανάθεση των τιμών των πεδίων του //r1// στα πεδία του //r2// (πεδίο προς πεδίο).
 </WRAP> </WRAP>
  
cpp/copy_constructors.txt · Last modified: 2022/05/12 19:41 by gthanos