Προς το περιεχόμενο

copy constructors c++


Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

δεν μπορώ να καταλάβω πότε πρέπει να χρησιμοποιήσω έναν copy constructor σε ένα πρόγραμμα. Μπορεί να με βοηθήσει κανείς?

thnks

Δημοσ.

Ο copy constructor χρησιμοποιείται για την αντιγραφή του αντικειμένου σου σε ένα άλλο. Αν δεν ορίσεις εσύ έναν θα οριστεί αυτόματα.

 

Ο default copy constructor αντιγράφει όλες τις τιμές των μεταβλητών από την μία κλάση σε μία άλλη. Αυτό σημαίνει ότι αν υπάρχει κάποιος pointer θα αντιγραφεί σαν pointer και όχι σαν περιεχόμενα μνήμης. Οπότε αλλάζοντας τα δεδομένα από το ένα αντικείμενο αυτόματα θα αλλάξει και το άλλο γιατί "δείχνουν" στην ίδια θέση μνήμης.

Για να το αποφύγεις αυτό ορίζεις τον δικό σου copy constructor έτσι ώστε να αντιγράψεις και τα δεδομένα και όχι μόνο τον Pointer στα δεδομένα.

 

 

Πιο αναλυτικά διάβασε αυτό.

  • Like 1
Δημοσ.

Μπορείς να κάνεις Overload και τον τελεστή = αν σε βολεύει πιο πολύ!

Ο τελεστής = καλείται κατά το assignment, όχι το copy construction.

Όταν σ'ένα definition αντικειμένου υπάρχει ο τελεστής = καλείται ο copy constructor, όχι ο τελεστής =.

std::string a("Hello World");
std::string b(a); //καλείται ο copy constructor

std::string a("Hello World");
std::string b = a; //πάλι καλείται ο copy constructor

std::string a("Hello World");
std::string b;
b = a;  //εδώ καλείται ο τελεστής =
  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...