Εισαγωγή στον Προγραμματισμό με C++

Σχετικά έγγραφα
Εισαγωγή στον Προγραμματισμό με C++

Εισαγωγή στον Προγραμματισμό με C++

Εισαγωγή στον Προγραμματισμό με C++

Δομημένος Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός

Εργαστήριο 10 Κλάσεις

Δομημένος Προγραμματισμός

Κλάσεις και αντικείμενα #include <iostream.h<

Εισαγωγή στον Προγραμματισμό με C++

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Εισαγωγή στον Προγραμματισμό με C++

Εισαγωγή στον Προγραμματισμό με C++

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Διαδικαστικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Εισαγωγή στον Προγραμματισμό με C++

Εισαγωγή στον Προγραμματισμό με C++

Οντοκεντρικός Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Δομημένος Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Στατιστική Επιχειρήσεων Ι

Δομημένος Προγραμματισμός

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

{ int a = 5; { int b = 7; a = b + 3;

Ηλεκτρονικοί Υπολογιστές

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Υδραυλικά & Πνευματικά ΣΑΕ

Αντικειμενοστραφής Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Λογιστικές Εφαρμογές Εργαστήριο

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οντοκεντρικός Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Κλάσεις και Αντικείµενα

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού

Τι είναι κλάση Κλάση

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 9: Συναρτήσεις Εμβέλεια

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Αντικειμενοστραφής Προγραμματισμός

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Ανάπτυξη και Σχεδίαση Λογισμικού

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Δομημένος Προγραμματισμός

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Εισαγωγή στον δομημένο προγραμματισμό

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 4: Έλεγχος Ροής. Κ.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 3: Είσοδος και Έξοδος Δεδομένων

Οντοκεντρικός Προγραμματισμός

Δομημένος Προγραμματισμός

Προγραμματισμός Υπολογιστών με C++

Αντικειμενοστραφής Προγραμματισμός

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Περιβαλλοντική Χημεία

Αντικειμενοστρεφής Προγραμματισμός

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολή if. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Βιομηχανικοί Ελεγκτές

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

7 ο ΕΡΓΑΣΤΗΡΙΟ ΣΗΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

11 ο ΕΡΓΑΣΤΗΡΙΟ ΣΗΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 10: Constructors και Destructors Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί Ενότητας Διασαφήνιση των εννοιών constructor και destructor και της χρήσης τους στις κλάσεις. 4

Περιεχόμενα Constructor και destructor Χρήση constructor Πολλαπλοί Constructors Χρήση destructor Παραδείγματα 5

Δισαφήνιση των εννοιών constructor και destructor Οι δύο αυτές έννοιες αποδίδονται στην Ελληνική βιβλιογραφία με πολλά ονόματα. Τα πιο συνηθισμένα είναι δομητές και αποδομητές, κατασκευαστές και καταστροφείς, συναρτήσεις δόμησης και αποδόμησης, δημιουργοί και καταστροφείς. Χάριν ευκολίας θα χρησιμοποιηθούν τα Αγγλικά ονόματα. 6

Constructors (1) Είναι αναγκαίο τα αντικείμενα να αρχικοποιούν τις μεταβλητές ή να τους αποδίδεται δυναμική μνήμη κατά τη διάρκεια της διαδικασίας της δημιουργίας τους για να λειτουργούν σωστά και να αποφεύγεται η εμφάνιση απροσδόκητων τιμών κατά τη διάρκεια της εκτέλεσής τους. Για παράδειγμα, τι θα συνέβαινε αν στο προηγούμενο πρόγραμμα γινόταν κλήση στην συνάρτηση μέλος Emvado () προτού κληθεί η συνάρτηση TimesPlevron (); Μάλλον θα είχαμε πάρει ένα απροσδιόριστο αποτέλεσμα δεδομένου ότι στα μέλη x και y ποτέ δεν έχει ανατεθεί μια τιμή. Ένα τέτοιο γεγονός φαίνεται όταν τρέξουμε το προηγούμενο πρόγραμμα καλώντας την συνάρτηση Emvado() πριν δοθούν τιμές στα αντικείμενα. 7

Constructors (2) Προκειμένου να αποφευχθεί αυτό, μια κλάση μπορεί να περιλαμβάνει μια ειδική συνάρτηση που ονομάζεται constructor, η οποία καλείται αυτόματα κάθε φορά που ένα νέο αντικείμενο της κλάσης αυτής έχει δημιουργηθεί. Αυτή η συνάρτηση constructor ακολουθεί τους παρακάτω κανόνες πρέπει να έχει το ίδιο όνομα με την κλάση, και δεν μπορεί να επιστρέφει τιμή (ούτε καν και την τιμή void), δηλαδή μία συνάρτηση constructor δεν έχει τύπο. 8

Παράδειγμα Program 5.3.1 class Korthogonio { int x, y; public: void TimesPlevron(int a, int b){ x = a; y = b; int Emvado (){return (x*y); ; int main () { Korthogonio sxima1, sxima2; // Xrisi Emvado() xoris na exoun apodothei times cout << "To emvado = " << sxima1.emvado()<<endl; cout << "To emvado = " << sxima2.emvado()<<endl; sxima1.timesplevron (10,23); sxima2.timesplevron (40,50); cout << "To emvado = " << sxima1.emvado()<<endl; cout << "To emvado = " << sxima2.emvado()<<endl; system("pause"); return EXIT_SUCCESS; 9

Χρήση Constructors Οι constructors χρησιμοποιούνται για να αποδώσουν τιμές στις μεταβλητές που είναι μέλη μίας κλάσης. Οι τιμές αυτές μπορεί να είναι οποιεσδήποτε θέλει ο προγραμματιστής ή κάποιες εξ ορισμού τιμές. H κλάση Korthogonio συμπεριλαμβανομένου μίας constructor μεθόδου παρουσιάζεται παρακάτω: Program using namespace std;//5.4.1 class Korthogonio { int x, y; public: Korthogonio(int a, int b){x = a; y = b;; int Emvado (){return (x*y);; ; int main () { Korthogonio sxima1 (10,20); //Dilosi kai arxikopoihsi antikeimenou cout << "To emvado = " << sxima1.emvado()<<endl; system("pause"); return EXIT_SUCCESS; 10

Παρατηρήσεις Όπως μπορείτε να διαπιστώσετε, τα αποτελέσματα του προγράμματος αυτού είναι το ίδιο με την προηγούμενο παράδειγμα που διέθετε την συνάρτηση TimesPlevron. Αλλά τώρα, έχουμε αφαιρέσει την συνάρτηση TimesPlevron (), και έχουμε συμπεριλάβει ένα constructor (κατασκευαστή) που εκτελεί μια παρόμοια λειτουργία δηλαδή αποδίδει τιμές ( αρχικοποιεί) στις μεταβλητές x y κάνοντας χρήση των παραμέτρων που υπάρχουν στην συνάρτηση constructor. Υπενθυμίζεται ότι χωρίς τον ορισμό ενός constructor πρώτα πρέπει να οριστούν τα αντικείμενα και μετά να γίνει αρχικοποίηση όπως φαίνεται και στο παρακάτω πρόγραμμα που έχουμε δεί και χρησιμοποιείται για την κατανόηση των εννοιών κλάσεων και αντικειμένων από την αρχή του κεφαλαίου αυτού. 11

Παράδειγμα Constructor class Korthogonio { //5.1.1 int x, y; public: void TimesPlevron(int a, int b){ x = a; y = b; int Emvado (){return (x*y); ; int main () { Korthogonio sxima1; sxima1.timesplevron (10,20); cout << "To emvado = " << sxima1.emvado()<<endl; system("pause"); return EXIT_SUCCESS; Ο constructor Korthogonio μπορεί να οριστεί και εκτός της κλάσης using namespace std; //5.5.1 class Korthogonio { int x, y; public: Korthogonio(int, int ); int Emvado (); ; Korthogonio::Korthogonio(int a, int b){ x = a; y = b; int Korthogonio::Emvado (){ return (x*y); int main () { Korthogonio sxima1 (10,20); cout << "To emvado = " << sxima1.emvado()<<endl; system("pause"); return EXIT_SUCCESS; 12

Πολλαπλοί Constructors (1) Μία κλάση μπορεί να έχει παραπάνω από ένα constructors με διαφορετικό όμως τύπο και πλήθος παραμέτρων. Όλοι οι constructors σε μία κλάση πρέπει να έχουν το ίδιο όνομα και αυτό που διαφοροποιεί τον ένα από τον άλλο είναι οι παράμετροι. (Γίνεται υπερφόρτισηoverloading). using namespace std; //5.6.1 class Korthogonio { int x, y; public: Korthogonio(){x=0;y=0; //default contructor (xoris parametrous) Korthogonio(int a, int b){ x = a; y = b; int Emvado (){return (x*y); ; int main () { Korthogonio sxima1 (10,20), sxima2 (40,50); cout << "To emvado = " << rect1.emvado()<<endl; cout << "To emvado = " << rect2.emvado()<<endl; Korthogonio sxima3; cout << "To emvado = " << sxima3.emvado()<<endl; system("pause"); return EXIT_SUCCESS; 13

Πολλαπλοί Constructors (2) Στο παραπάνω πρόγραμμα, παρατηρήστε για το πώς αυτά τα ορίσματα περνιόνται στον constructor κατά τη στιγμή την οποία δημιουργήθηκαν τα αντικείμενα της κλάσης αυτής ανάλογα με τις παραμέτρους που χρησιμοποιούνται: Με την εντολή: Korthogonio sxima1 (10, 20), sxima2 (40, 50); γίνεται χρήση του δεύτερου constructor που έχει οριστεί στο τμήμα public ενώ στην περίπτωση του sxima3 γίνεται κλήση του πρώτου constructor. Με τον τρόπο αυτό και ορίζονται αλλά και αρχικοποιούνται τα αντικείμενα. Οι constructors δεν μπορούν να καλούνται άμεσα σαν να ήταν ένα κοινό μέλος της κλάσης. Εκτελούνται μόνον όταν ένα νέο αντικείμενο της κλάσης αυτής έχει δημιουργηθεί. Μπορείτε επίσης να δείτε πως ούτε στο πρωτότυπο του constructor (εντός της κλάσης) ούτε ο τελευταίος ορισμός του constructor περιλαμβάνει κάποια τιμή επιστροφής ούτε καν void. 14

Πολλαπλοί Constructors (3) Οποιοσδήποτε constructor που δεν έχει παραμέτρους καλείται εξορισμού constructor (default constructor). Μία κλάση διαθέτει τον εξορισμό constructor με δύο τρόπος: είτε ο προγραμματιστής ορίζει ένα τέτοιο constructor είτε ο compiler αυτόματα δημιουργεί ένα τέτοιο constructor στην περίπτωση που στη κλάση δεν συμπεριλαμβάνεται κανένας constructor από τον προγραμματιστή. Στην δεύτερη αυτή περίπτωση όμως δεν αρχικοποιείται κανένα αντικείμενο. Αν ο προγραμματιστής ορίσει κάποιο constructor ο compiler δεν δημιουργεί αυτόματα τον εξ ορισμού constructor. Σε όλες τις συναρτήσεις ο προγραμματιστής μπορεί να εκχωρήσει κάποιες εξορισμού τιμές στις παραμέτρους. Το ίδιο μπορεί να γίνει και στις συναρτήσεις μέλη μίας κλάσης καθώς και στους constructors που και αυτοί είναι συναρτήσεις. Οι αρχικές τιμές εκχωρούνται στην περίπτωση που κληθεί o constructor χωρίς παραμέτρους. Το παρακάτω πρόγραμμα περιέχει μόνο ένα constructor με τον οποίο υπάρχει δυνατότητα απόδοσης αρχικών τιμών. 15

Παράδειγμα using namespace std;//5.6.2 class Korthogonio { int x, y; public: Korthogonio(int a=0, int b=0){ x = a; y = b; int Emvado (){return (x*y); ; int main () { // kaleitai o constuctors me tis default times 0,0 Korthogonio sxima3; cout << "To emvado = " << sxima3.emvado()<<endl; system("pause"); return EXIT_SUCCESS; Προσοχή: Συνήθως όλες τις φορές είναι απαραίτητο να αρχικοποιείται ένα αντικείμενο γι αυτό καλό είναι πάντα να περιλαμβάνεται ένας constructor στο ορισμό μίας κλάσης. 16

Destructors Μια συνάρτηση destructor εκπληρώνει το αντίθετο από ένα constructor. Καλείται αυτόματα όταν ένα αντικείμενο καταστρέφεται, είτε επειδή το πρόγραμμα έχει φτάσει σε σημείο εκτός του πεδίου εμβέλειας του αντικειμένου (για παράδειγμα, σε περίπτωση που ορίστηκε ως ένα τοπικό αντικείμενο μέσα σε συνάρτηση και η συνάρτηση τελειώνει) ή επειδή είναι ένα αντικείμενο που έχει δημιουργηθεί με δυναμική κατανομή μνήμης και απελευθερώνεται η μνήμη που καταλαμβάνει χρησιμοποιώντας τον τελεστή delete. Οι destructors πρέπει να έχουν το ίδιο όνομα με την κλάση, αλλά προηγείται το σύμβολο (~) και δεν θα πρέπει να επιστρέφει καμία τιμή. Εάν δεν ορίζεται από τον προγραμματιστή δημιουργείται αυτόματα από το πρόγραμμα. Κάθε κλάση έχει ακριβώς ένα destructor δηλαδή απαγορεύεται να γίνει υπερφόρτωση σε ένα destructor (ενώ μπορεί να έχει παραπάνω από ένα constructor). O destructor αυτός είναι είτε ο εξ ορισμού που δημιουργεί αυτόματα το σύστημα είτε ένας που ορίζει ο προγραμματιστής 17

Χρήση Destructors Η χρήση των destructors είναι ιδιαίτερα κατάλληλη, όταν σε ένα αντικείμενο εκχωρείται δυναμική μνήμη κατά τη διάρκεια της ζωής του και κατά τη στιγμή της καταστροφής θέλουμε να απελευθερωθεί η μνήμη που καταλαμβάνει το αντικείμενο. To επόμενο παράδειγμα εμφανίζει τον τρόπο που δημιουργείται και καταστρέφεται ένα αντικείμενο. Ο τρόπος αυτό για να είναι κατανοητός περιλαμβάνει εντολές εμφάνισης μηνυμάτων (cout) μέσα στους ορισμούς των constructor και destructor. 18

Παραδείγματα χρήσης Destructors Παράδειγμα 1 using namespace std; class Korthogonio { int x, y; public: ~Korthogonio(); Korthogonio(int, int ); int Emvado (){return (x*y); ; Korthogonio::Korthogonio(int a, int b){ x = a; y = b; cout<<"dimiourgia antikeimeno"<<endl; Παράδειγμα 2 int main () { {Korthogonio sxima1 (100,23); {Korthogonio sxima2 (400,50); cout << "To emvado = " << sxima2.emvado()<<endl; cout << "To emvado = " << sxima1.emvado()<<endl; system("pause"); return EXIT_SUCCESS; Korthogonio::~Korthogonio() { cout<<"katastrofi antikeimeno"<<endl; 19

Παράδειγμα 1 using namespace std; class Korthogonio { int x, y; public: ~Korthogonio(); Korthogonio(int, int ); int Emvado (){return (x*y); ; Korthogonio::Korthogonio(int a, int b){ x = a; y = b; cout<<"dimiourgia antikeimeno"<<endl; Korthogonio::~Korthogonio() { cout<<"katastrofi antikeimeno"<<endl; 20

Παράδειγμα 2 int main () { {Korthogonio sxima1 (100,23); {Korthogonio sxima2 (400,50); cout << "To emvado = " << sxima2.emvado()<<endl; cout << "To emvado = " << sxima1.emvado()<<endl; system("pause"); return EXIT_SUCCESS; 21

Τέλος Ενότητας