User Tools

Site Tools


cpp:object_creation

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:object_creation [2019/04/19 09:14] – [Παράδειγμα αρχικοποίησης δεικτών] gthanoscpp:object_creation [2019/04/19 09:26] – [Παράδειγμα αρχικοποίησης δεικτών] gthanos
Line 210: Line 210:
 int Rectangle::getArea() { return *width_ptr * *height_ptr; } int Rectangle::getArea() { return *width_ptr * *height_ptr; }
 </code> </code>
 +
 +<WRAP tip 80% round>
 +Παρατηρήστε τον τρόπο με τον οποίο καλείται κατασκευαστής χωρίς ορίσματα από τους άλλους κατασκευαστές. Η κλήση ενός κατασκευαστή από έναν άλλο είναι δυνατή στη C++ με χρήση του ονόματος της κλάσης. Γενικότερα, η κλήση μπορεί να γίνει είτε στο //member initialization list//, είτε μέσα στο σώμα του κατασκευαστή. Για παράδειγμα
 +<code cpp>
 +Rectangle::Rectangle(int w, int h) : Rectangle() {
 +  *width_ptr = w;
 +  *height_ptr = h;
 +  cout << "Calling 2 args constructor" << endl;
 +}
 +</code>
 +ή ισοδύναμα
 +<code cpp>
 +Rectangle::Rectangle(int w, int h) {
 +  Rectangle();
 +  *width_ptr = w;
 +  *height_ptr = h;
 +  cout << "Calling 2 args constructor" << endl;
 +}
 +</code>
 +</WRAP>
  
 <code cpp RectangleUsage.cpp> <code cpp RectangleUsage.cpp>
Line 248: Line 268:
   return 0;   return 0;
 }  }
 +</code>
 +
 +Μεταγλωττίστε και εκτελέστε τον παραπάνω κώδικα. Το output θα είναι το εξής:
 +<code>
 +Calling 0 args constructor
 +Calling 2 args constructor
 +Calling 0 args constructor
 +Calling 2 args constructor
 +Calling 1 args constructor
 +Calling 0 args constructor
 +Calling 2 args constructor
 +Calling 0 args constructor
 +Calling 2 args constructor
 +Calling 1 args constructor
 +---------------
 +Calling 0 args constructor
 +Calling 2 args constructor
 +Calling 1 args constructor
 +Calling 0 args constructor
 +Calling 2 args constructor
 +---------------
 +rect' getArea: 2
 +*r1'  getArea: 2
 +*r2'  getArea: 4
 +r3[0]'s getArea: 12
 +r3[1]'s getArea: 25
 +r4[0]'s getArea: 36
 +r4[1]'s getArea: 12
 +---------------
 +Destructing rectangle (w:2, h:2)
 +Destructing rectangle (w:5, h:5)
 +Destructing rectangle (w:3, h:4)
 +---------------
 +Destructing rectangle (w:6, h:6)
 +Destructing rectangle (w:2, h:6)
 +Destructing rectangle (w:1, h:2)
 </code> </code>
  
  
cpp/object_creation.txt · Last modified: 2021/05/07 06:22 (external edit)