cpp:object_creation
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Next revisionBoth sides next revision | ||
cpp:object_creation [2017/04/20 09:06] – [Δημιουργία και ανάθεση αντικειμένων σε δείκτες] gthanos | cpp:object_creation [2017/04/20 09:32] – [Δημιουργία και ανάθεση αντικειμένων σε δείκτες] gthanos | ||
---|---|---|---|
Line 72: | Line 72: | ||
Τα αντικείμενα που φτιάξαμε μέχρι τώρα αποθηκεύονται μέσα στη στοίβα της συνάρτησης που καλεί τον κατασκευαστή της. Τα αντικείμενα αυτά έχουν χρόνο ζωής όσο εκτελείται η συγκεκριμένη συνάρτηση και η στοίβα της είναι ενεργή. Μόλις επιστρέψουμε από την συνάρτηση που δημιουργεί το οποιοδήποτε αντικείμενο, | Τα αντικείμενα που φτιάξαμε μέχρι τώρα αποθηκεύονται μέσα στη στοίβα της συνάρτησης που καλεί τον κατασκευαστή της. Τα αντικείμενα αυτά έχουν χρόνο ζωής όσο εκτελείται η συγκεκριμένη συνάρτηση και η στοίβα της είναι ενεργή. Μόλις επιστρέψουμε από την συνάρτηση που δημιουργεί το οποιοδήποτε αντικείμενο, | ||
+ | |||
+ | Παρακάτω δίνεται ο κώδικας της συνάρτησης //foo// η οποία δημιουργεί ένα πίνακα από δύο αντικείμενα τύπου // | ||
<code cpp foo.cpp> | <code cpp foo.cpp> | ||
Line 90: | Line 92: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | Ακολουθεί το σχηματικό διάγραμμα του //stack// της διεργασίας πριν, κατά τη διάρκεια και μετά την εκτέλεσης της //foo//. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
Υπάρχουν όμως περιπτώσεις που θέλουμε να ορίσουμε ένα αντικείμενο το οποίο θα παραμείνει και μετά την έξοδο από τη συνάρτηση που το δημιούργησε. Σε αυτές τις περιπτώσεις αρκεί να ορίσουμε ένα δείκτη προς το αντικείμενο και να το αρχικοποιήσουμε με τη βοήθεια του τελεστή //new//. Ο τελεστής //new// έχει την δυνατότητα να δεσμεύσει τον απαραίτητο χώρο στο //heap// και να καλέσει τον κατασκευαστή για το αντικείμενο που θα δημιουργηθεί. Παρακάτω βλέπετε ένα παράδειγμα όπου η συνάρτηση //foo// επιστρέφει ένα αντικείμενο της κλάσης // | Υπάρχουν όμως περιπτώσεις που θέλουμε να ορίσουμε ένα αντικείμενο το οποίο θα παραμείνει και μετά την έξοδο από τη συνάρτηση που το δημιούργησε. Σε αυτές τις περιπτώσεις αρκεί να ορίσουμε ένα δείκτη προς το αντικείμενο και να το αρχικοποιήσουμε με τη βοήθεια του τελεστή //new//. Ο τελεστής //new// έχει την δυνατότητα να δεσμεύσει τον απαραίτητο χώρο στο //heap// και να καλέσει τον κατασκευαστή για το αντικείμενο που θα δημιουργηθεί. Παρακάτω βλέπετε ένα παράδειγμα όπου η συνάρτηση //foo// επιστρέφει ένα αντικείμενο της κλάσης // |
cpp/object_creation.txt · Last modified: 2021/05/07 06:22 (external edit)