Πίνακας περιεχομένων:

Ποιος τελεστής χρησιμοποιείται για να εκχωρήσει δυναμικά ένα αντικείμενο μιας κλάσης στη C ++;
Ποιος τελεστής χρησιμοποιείται για να εκχωρήσει δυναμικά ένα αντικείμενο μιας κλάσης στη C ++;

Βίντεο: Ποιος τελεστής χρησιμοποιείται για να εκχωρήσει δυναμικά ένα αντικείμενο μιας κλάσης στη C ++;

Βίντεο: Ποιος τελεστής χρησιμοποιείται για να εκχωρήσει δυναμικά ένα αντικείμενο μιας κλάσης στη C ++;
Βίντεο: Joscha Bach: Time, Simulation Hypothesis, Existence 2024, Νοέμβριος
Anonim

C++ υποστηρίζει δυναμικός κατανομή και εκχώρηση των αντικείμενα χρησιμοποιώντας το νέο και διαγράψτε χειριστές . Αυτά τα οι φορείς εκμετάλλευσης κατανέμουν μνήμη για αντικείμενα από μια πισίνα που ονομάζεται δωρεάν κατάστημα. Το νέο χειριστής καλεί την ειδική λειτουργία χειριστής νέο και η διαγραφή χειριστής καλεί την ειδική λειτουργία χειριστής διαγράφω.

Με αυτόν τον τρόπο, πώς μπορείτε να εκχωρήσετε δυναμικά έναν πίνακα αντικειμένων στη C++;

C++ Σημειώσεις: Δυναμική κατανομή πινάκων

  1. Τα προβλήματα με τους πίνακες σταθερού μεγέθους. Δήλωση ενός πίνακα με σταθερό μέγεθος όπως.
  2. Δήλωση πίνακα ως δείκτη, εκχώρηση με νέο. Για να δημιουργήσετε μια μεταβλητή που θα δείχνει σε έναν δυναμικά εκχωρημένο πίνακα, δηλώστε τη ως δείκτη στον τύπο του στοιχείου.
  3. Εκχωρήστε έναν πίνακα με κωδικό>νέο.
  4. Ελευθέρωση μνήμης με διαγραφή.
  5. Παραδείγματα.

Επιπλέον, πώς εκχωρείτε και εκχωρείτε δυναμικά τη μνήμη στη C++; Το C χρησιμοποιεί τη συνάρτηση malloc() και calloc(). κατανομή μνήμης δυναμικά κατά το χρόνο εκτέλεσης και χρησιμοποιεί τη συνάρτηση free() για να ελευθερώσει δυναμικά κατανέμεται μνήμη . C++ υποστηρίζει αυτές τις λειτουργίες και έχει επίσης δύο τελεστές νέους και διαγραφής που εκτελούν την εργασία του εντοπιστικός και απελευθερώνοντας το μνήμη με καλύτερο και ευκολότερο τρόπο.

Παρομοίως, κάποιος μπορεί να ρωτήσει, πώς φτιάχνετε μια κλάση C++ της οποίας τα αντικείμενα μπορούν να εκχωρηθούν μόνο δυναμικά;

  1. Δεν μπορεί να γίνει. Το μόνο πράγμα που μπορείτε να κάνετε είναι να κάνετε τον κατασκευαστή ιδιωτικό και να έχετε ένα στατικό εργοστάσιο που δημιουργεί μια νέα παρουσία της κλάσης. –
  2. Η δημιουργία μιας τέτοιας τάξης είναι σίγουρα ένα πρόβλημα.
  3. Αυτή είναι μια πολύ περίεργη απαίτηση.

Πώς μπορώ να περιορίσω τη δυναμική εκχώρηση ενός αντικειμένου στη C++;

Βάσει στοίβας αντικείμενα διοικούνται σιωπηρά από C++ μεταγλωττιστής. Καταστρέφονται όταν ξεφεύγουν από το πεδίο εφαρμογής και δυναμικά εκχωρημένα αντικείμενα πρέπει να απελευθερωθεί χειροκίνητα, χρησιμοποιώντας διαφορετικά τον τελεστή διαγραφής μνήμη εμφανίζεται διαρροή. C++ δεν υποστηρίζει την προσέγγιση αυτόματης συλλογής σκουπιδιών που χρησιμοποιείται από γλώσσες όπως η Java και η C#.