aris92 Δημοσ. 29 Ιανουαρίου 2013 Δημοσ. 29 Ιανουαρίου 2013 Καλησπέρα, δεν μπορώ να καταλάβω πότε πρέπει να χρησιμοποιήσω έναν copy constructor σε ένα πρόγραμμα. Μπορεί να με βοηθήσει κανείς? thnks
MitsakosGR Δημοσ. 29 Ιανουαρίου 2013 Δημοσ. 29 Ιανουαρίου 2013 Ο copy constructor χρησιμοποιείται για την αντιγραφή του αντικειμένου σου σε ένα άλλο. Αν δεν ορίσεις εσύ έναν θα οριστεί αυτόματα. Ο default copy constructor αντιγράφει όλες τις τιμές των μεταβλητών από την μία κλάση σε μία άλλη. Αυτό σημαίνει ότι αν υπάρχει κάποιος pointer θα αντιγραφεί σαν pointer και όχι σαν περιεχόμενα μνήμης. Οπότε αλλάζοντας τα δεδομένα από το ένα αντικείμενο αυτόματα θα αλλάξει και το άλλο γιατί "δείχνουν" στην ίδια θέση μνήμης. Για να το αποφύγεις αυτό ορίζεις τον δικό σου copy constructor έτσι ώστε να αντιγράψεις και τα δεδομένα και όχι μόνο τον Pointer στα δεδομένα. Πιο αναλυτικά διάβασε αυτό. 1
pbp Δημοσ. 29 Ιανουαρίου 2013 Δημοσ. 29 Ιανουαρίου 2013 Μπορείς να κάνεις Overload και τον τελεστή = αν σε βολεύει πιο πολύ!
Erevis Δημοσ. 29 Ιανουαρίου 2013 Δημοσ. 29 Ιανουαρίου 2013 Μπορείς να κάνεις 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; //εδώ καλείται ο τελεστής = 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα