User Tools

Site Tools


cpp:object_lifecycle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
cpp:object_lifecycle [2020/04/14 14:27] – [Ένα πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών] gthanoscpp:object_lifecycle [2020/04/14 14:30] – [Ένα πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών] gthanos
Line 149: Line 149:
   - πριν την ολοκλήρωση του προγράμματος πρέπει να ελευθερώσουμε τη μνήμη που δεσμεύτηκε στο //heap// κατά τη δημιουργία των αντικειμένων στα οποία δείχνουν οι δείκτες //r2, r3 και r4//.   - πριν την ολοκλήρωση του προγράμματος πρέπει να ελευθερώσουμε τη μνήμη που δεσμεύτηκε στο //heap// κατά τη δημιουργία των αντικειμένων στα οποία δείχνουν οι δείκτες //r2, r3 και r4//.
  
-<code cpp RectangleUsage1.cpp>+<code cpp RectangleUsage-1.cpp>
 #include <iostream> #include <iostream>
 using namespace std; using namespace std;
Line 217: Line 217:
 ===== Ένα ακόμη πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών ===== ===== Ένα ακόμη πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών =====
  
-Παρακάτω δίνεται η κλάση //Rectangle// και ο δείκτης σε δείκτη τύπου //Rectangle// //r4//. Πριν την ολοκλήρωση του προγράμματος είμαστε και πάλι υποχρεωμένοι να ελευθερώσουμε τη μνήμη που δεσμεύτηκε στο //heap// κατά τη δημιουργία των αντικειμένων στα οποία δείχνουν οι ενδιάμεσοι δείκτες που δημιουργούνται και ο δείκτης //r4//.+Παρακάτω δίνεται η κλάση //Rectangle// και ο δείκτης σε δείκτη τύπου //Rectangle// //r4//, μέσω του οποίου δημιουργούμε ένα διδιάστατο πίνακα από ορθογώνια παραλληλόγραμμα. Η πρώτη γραμμή του πίνακα έχει δύο στήλες και η δεύτερη γραμμή τρεις στήλες. Πριν την ολοκλήρωση του προγράμματος είμαστε και πάλι υποχρεωμένοι να ελευθερώσουμε τη μνήμη που δεσμεύτηκε στο //heap// κατά τη δημιουργία των αντικειμένων στα οποία δείχνουν οι ενδιάμεσοι δείκτες που δημιουργούνται και ο δείκτης //r4//. 
 + 
 +<code cpp RectangleUsage-2.cpp> 
 +#include <iostream> 
 +using namespace std; 
 +#include "Rectangle.hpp" 
 + 
 +/* Δημιουργώ ένα δυναμικά δεσμευμένο  
 + * διδιάστατο πίνακα από αντικείμενα  
 + * τύπου Rectangle. 
 + */ 
 + 
 +int main() { 
 +   
 +  Rectangle **r4; 
 +  cout << "--- init r4 ---" << endl; 
 +  r4 = new Rectangle*[2]; 
 +  cout << "--- init r4[0] ---" << endl; 
 +  r4[0] = new Rectangle[2] {{5,6}, {7,8}}; 
 +  cout << "--- init r4[1] ---" << endl; 
 +  r4[1] = new Rectangle[3] {{9}, {10}, {11,10}}; 
 +   
 +  cout << "---------------" << endl; 
 +  cout << "r4[0][0]'s getArea: " << r4[0][0].getArea() << endl; 
 +  cout << "r4[0][1]'s getArea: " << r4[0][1].getArea() << endl; 
 +  cout << "r4[1][0]'s getArea: " << r4[1][0].getArea() << endl; 
 +  cout << "r4[1][1]'s getArea: " << r4[1][1].getArea() << endl; 
 +  cout << "r4[1][2]'s getArea: " << r4[1][2].getArea() << endl; 
 +  cout << "---------------" << endl; 
 +   
 +  delete[] r4[0]; 
 +  delete[] r4[1]; 
 +  delete[] r4; 
 +}  
 +</code>
  
  
cpp/object_lifecycle.txt · Last modified: 2021/05/07 06:35 (external edit)