Πώς να εφαρμόσετε το Copy Constructor στο C ++;



Η κατανόηση των κατασκευαστών ήταν ένα αίνιγμα για πολλούς. Αυτό το άρθρο θα σας βοηθήσει να απομυθοποιήσετε την έννοια του Copy Constructor In C ++

Κατανόηση Κατασκευαστές υπήρξε ένα αίνιγμα για πολλούς. Αυτό το άρθρο θα σας βοηθήσει να απομυθοποιήσετε την έννοια του Copy Constructor In C ++. Οι ακόλουθοι δείκτες θα καλυφθούν σε αυτό το άρθρο,

Ας ξεκινήσουμε λοιπόνμε αυτό το άρθρο σχετικά με τον Κατασκευαστή αντιγραφής στο C ++





A Copy Constructor είναι Κατασκευαστής που αρχικοποιεί ένα αντικείμενο μιας κλάσης χρησιμοποιώντας ένα άλλο αντικείμενο της ίδιας κλάσης.

είναι ένα vs έχει ένα java

Σύνταξη:



Έχουμε τη λέξη-κλειδί const επειδή θέλουμε να κάνουμε την τιμή σταθερή και να βεβαιωθούμε ότι δεν τροποποιείται κάπου στον κώδικα. Όπως ένας προεπιλεγμένος κατασκευαστής, ένας κατασκευαστής αντιγράφων παρέχεται επίσης από τον μεταγλωττιστή. Αυτό ονομάζεται Προεπιλεγμένος Κατασκευαστής Αντιγραφής. Οι κατασκευαστές αντιγράφων μπορούν να γίνουν ιδιωτικοί. Δεν μπορούμε να αντιγράψουμε τα αντικείμενα της κλάσης όταν κάνουμε τον κατασκευαστή αντιγράφων ιδιωτικό.

Εδώ είναι ένα παράδειγμα κώδικα :

#include using namespace std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Ο κανονικός κατασκευαστής καλείται εδώ δοκιμή t2 = t1 // Ο κατασκευαστής αντιγραφής καλείται εδώ cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Παραγωγή:



Κατασκευαστής εξόδου-αντιγραφής σε C ++ - Edureka

Εξήγηση

Το παραπάνω πρόγραμμα είναι μια βασική επίδειξη ενός κατασκευαστή αντιγράφων. Έχουμε μια δοκιμή τάξης, με ένα μέλος προσωπικών δεδομένων τύπου int που ονομάζεται x. Έπειτα έχουμε έναν παραμετροποιημένο κατασκευαστή, ο οποίος εκχωρεί 7 στις μεταβλητές x. Έχουμε έναν κατασκευαστή αντιγράφων, ο οποίος υποδηλώνει την τιμή του t2 με την τιμή του t1. Αποστέλλεται η διεύθυνση του t2 που διατηρεί την τιμή του t1 και αντιστοιχεί στο x. Υπάρχει μια συνάρτηση get που επιστρέφει την τιμή του x.

Η κύρια συνάρτηση έχει ένα αντικείμενο δοκιμής τάξης που ονομάζεται t1. Υπάρχει μια τιμή που σχετίζεται με αυτό το αντικείμενο, αυτή είναι μια παράμετρος. Η κύρια συνάρτηση έχει ένα άλλο αντικείμενο δοκιμής τάξης που ονομάζεται t2. Αυτό αρχικοποιείται χρησιμοποιώντας τη μεταβλητή t1 και ο κατασκευαστής αντιγράφων καλείται εδώ. Τέλος, η συνάρτηση get καλείται σε σχέση με τα t1 και t2 για να πάρει την τιμή του x.

Τύποι

Υπάρχουν δύο τύποι του κατασκευαστή αντιγράφων.
⦁ Κατασκευαστής ρηχών αντιγράφων
⦁ Κατασκευαστής αντιγράφων σε βάθος

Προχωρώντας με αυτό το άρθρο σχετικά με το Copy Constructor στο C ++

Κατασκευαστής ρηχών αντιγράφων:

Ένας κατασκευαστής ρηχών αντιγράφων είναι ένας προεπιλεγμένος κατασκευαστής αντιγράφων.

Παράδειγμα:

Δύο άτομα έχουν πρόσβαση σε μια βάση δεδομένων ταυτόχρονα και κάνουν αλλαγές στις τιμές σε δύο διαφορετικά συστήματα. Εάν τότε κάνουν αλλαγές στη βάση δεδομένων, και οι δύο αυτές αλλαγές θα εμφανίζονται στη βάση δεδομένων. Και τα δύο αντικείμενα θα οδηγούν στην ίδια θέση μνήμης. Αυτός είναι ο κατασκευαστής ρηχών αντιγράφων. Αυτό συμβαίνει κυρίως όταν συνεργαζόμαστε με τον προεπιλεγμένο κατασκευαστή αντιγράφων. Ακολουθεί ένα παράδειγμα κώδικα για: Κατασκευαστής ρηχών αντιγράφων:

# συμπερίληψη με χρήση δοκιμαστικής κατηγορίας std class {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Παραγωγή:

Εξήγηση:

Στον παραπάνω κώδικα, χρησιμοποιούμε έναν προεπιλεγμένο κατασκευαστή αντιγράφων που παρέχεται από τον μεταγλωττιστή. Ως εκ τούτου, είναι ένας κατασκευαστής ρηχών αντιγράφων.

Προχωρώντας με αυτό το άρθρο σχετικά με το Copy Constructor στο C ++

typecast double to int java

Κατασκευαστής βαθιάς αντιγραφής

Το Deep Copy Constructor είναι ένας κατασκευαστής αντιγράφων που καθορίζεται από το χρήστη.
Για παράδειγμα:
Όταν δύο άτομα πρέπει να κάνουν μια παρουσίαση και οι δύο αντιγράφουν από την ίδια πηγή, τα αντίγραφα είναι ξεχωριστά. Έτσι, όταν κάνετε τροποποιήσεις, δεν επηρεάζεται μόνο το άλλο αντίγραφο. Αυτός είναι ο κατασκευαστής Deep Copy. Και τα δύο αντικείμενα θα δείχνουν σε διαφορετικές θέσεις μνήμης και οι αλλαγές σε ένα δεν θα έχουν καμία επίδραση στην άλλη. Η μνήμη κατανέμεται δυναμικά.

Ακολουθεί ένα παράδειγμα κώδικα για: Κατασκευαστής αντιγράφων βάθους:

#include using namespace std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Ο κανονικός κατασκευαστής καλείται εδώ δοκιμή t2 = t1 // Ο κατασκευαστής αντιγραφής καλείται εδώ cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Παραγωγή:

Εξήγηση

Αυτός είναι ο ίδιος κωδικός που χρησιμοποιήσαμε παραπάνω, δίνοντας παρόμοια έξοδο. Είναι ένας κατασκευαστής αντιγράφων που ορίζεται από το χρήστη και ως εκ τούτου είναι ένας κατασκευαστής αντιγραφής.

Έτσι, έχουμε φτάσει στο τέλος αυτού του άρθρου σχετικά με το «Copy Constructor in C ++». Εάν θέλετε να μάθετε περισσότερα, δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.