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 revisionBoth sides next revision
cpp:object_lifecycle [2020/04/14 14:27] – [Ένα πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών] gthanoscpp:object_lifecycle [2020/04/14 14:29] – [Ένα ακόμη πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών] gthanos
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)