User Tools

Site Tools


cpp:copy_constructors

This is an old revision of the document!


Κατασκευαστές Αντιγραφείς

Στην ενότητα των συναρτήσεων είδαμε την κλήση με τιμή και κλήση με αναφορά προκειμένου να περάσουμε παραμέτρους σε μία συνάρτηση. Κατά την κλήση με τιμή όταν η παράμετρος είναι ένα αντικείμενο, ένα αντίγραφο του αντικειμένου θα πρέπει να δημιουργηθεί στο stack της συνάρτησης που καλείται. Προκειμένου να γίνει αυτό η C++ ορίζει την έννοια του κατασκευαστή αντιγραφέα ο οποίος έχει την δυνατότητα να δημιουργήσει ένα αντικείμενο που είναι ακριβές αντίγραφο ενός άλλου αντικειμένου. Δείτε το παρακάτω παράδειγμα της μεθόδου printArea η οποία λαμβάνει ως παράμετρο ένα αντικείμενο της κλάσης Rectangle.

foo.cpp
#include <iostream>
using namespace std;
#include "Rectangle.cpp"
 
void printArea(Rectangle r) {
  cout << " area: " << r.getArea() << endl;
}
 
int main() {
  Rectangle rect(5,6);
  printArea(rect);
}

Παρακάτω δίνεται το σχηματικό διάγραμμα της στοίβας της διεργασίας πριν και κατά τη διάρκεια της κλήσης της μεθόδου printArea. Διακρίνεται η αντιγραφή του αντικειμένου rect στη στοίβα της printArea κατά την κλήση της.

cpp/copy_constructors.1492687338.txt.gz · Last modified: 2017/04/20 10:22 (external edit)