cpp:object_lifecycle
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cpp:object_lifecycle [2021/05/07 07:33] – [Ένα πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών] gthanos | cpp:object_lifecycle [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 83: | Line 83: | ||
</ | </ | ||
- | ===== 1η Περίπτωση - Δημιουργία αντικειμένων στο Stack ===== | + | ===== 1η περίπτωση - Δημιουργία αντικειμένων στο Stack ===== |
Τα αντικείμενα στο τρέχον παράδειγμα αποθηκεύονται μέσα στη στοίβα (//stack//) της συνάρτησης που καλεί τον κατασκευαστή της. Τα αντικείμενα αυτά έχουν χρόνο ζωής όσο εκτελείται η συγκεκριμένη συνάρτηση και η στοίβα της είναι ενεργή. Μόλις επιστρέψουμε από την συνάρτηση που δημιουργεί το οποιοδήποτε αντικείμενο, | Τα αντικείμενα στο τρέχον παράδειγμα αποθηκεύονται μέσα στη στοίβα (//stack//) της συνάρτησης που καλεί τον κατασκευαστή της. Τα αντικείμενα αυτά έχουν χρόνο ζωής όσο εκτελείται η συγκεκριμένη συνάρτηση και η στοίβα της είναι ενεργή. Μόλις επιστρέψουμε από την συνάρτηση που δημιουργεί το οποιοδήποτε αντικείμενο, | ||
Line 112: | Line 112: | ||
{{ : | {{ : | ||
- | ===== 2η Περίπτωση - Δημιουργία αντικειμένων στο Heap ===== | + | ===== 2η περίπτωση - Δημιουργία αντικειμένων στο Heap ===== |
Υπάρχουν περιπτώσεις που θέλουμε να ορίσουμε ένα αντικείμενο το οποίο θα παραμείνει και μετά την έξοδο από τη συνάρτηση που το δημιούργησε. Σε αυτές τις περιπτώσεις πρέπει α) να ορίσουμε ένα δείκτη του τύπου του αντικείμενου που θέλουμε να δημιουργήσουμε και β) να δεσμεύσουμε την απαραίτητη μνήμη και να αρχικοποιήσουμε το αντικείμενο μέσω του τελεστή //new//. Παρακάτω βλέπετε ένα παράδειγμα όπου η συνάρτηση //foo// επιστρέφει ένα δείκτη σε αντικείμενο της κλάσης // | Υπάρχουν περιπτώσεις που θέλουμε να ορίσουμε ένα αντικείμενο το οποίο θα παραμείνει και μετά την έξοδο από τη συνάρτηση που το δημιούργησε. Σε αυτές τις περιπτώσεις πρέπει α) να ορίσουμε ένα δείκτη του τύπου του αντικείμενου που θέλουμε να δημιουργήσουμε και β) να δεσμεύσουμε την απαραίτητη μνήμη και να αρχικοποιήσουμε το αντικείμενο μέσω του τελεστή //new//. Παρακάτω βλέπετε ένα παράδειγμα όπου η συνάρτηση //foo// επιστρέφει ένα δείκτη σε αντικείμενο της κλάσης // | ||
Line 215: | Line 215: | ||
Παρατηρήστε ότι στον πίνακα //r3// πρώτα καταστρέφεται το αντικείμενο //r3[1]// και στη συνέχεια το αντικείμενο //r3[0]//. | Παρατηρήστε ότι στον πίνακα //r3// πρώτα καταστρέφεται το αντικείμενο //r3[1]// και στη συνέχεια το αντικείμενο //r3[0]//. | ||
- | ===== Ένα ακόμη πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών ===== | ||
- | Παρακάτω δίνεται η κλάση // | + | ===== 4η περίπτωση - δυναμικά δεσμευμένοι διδιάστατοι πίνακες από αντικείμενα ===== |
+ | |||
+ | Παρακάτω δίνεται η κλάση // | ||
<code cpp RectangleUsage-2.cpp> | <code cpp RectangleUsage-2.cpp> |
cpp/object_lifecycle.1620372798.txt.gz · Last modified: 2021/05/07 06:33 (external edit)