This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
cpp:destructors [2020/04/08 10:34] gthanos created |
cpp:destructors [2021/05/17 06:36] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Καταστροφείς της κλάσης ===== | ||
| - | |||
| - | Σε αναλογία με τον κατασκευαστή της κλάσης η C++ δηλώνει και τον καταστροφέα της κλάσης. Ο καταστροφέας της κλάσης επιτρέπει να γίνουν οι απαραίτητες εργασίες καθαρισμού για το αντικείμενο που καταστρέφεται. Για παράδειγμα είναι πιθανόν κατά την δημιουργία του αντικειμένου να έχει δεσμευθεί μνήμη την οποία πρέπει να ελευθερώσουμε ή να έχουν ανοιχθεί αρχεία τα οποία κατά την καταστροφή του αντικειμένου πρέπει να τα κλείσουμε. | ||
| - | |||
| - | Στο παρακάτω παράδειγμα βλέπετε την κλάση // | ||
| - | |||
| - | <code cpp Rectangle.cpp> | ||
| - | #include < | ||
| - | #include < | ||
| - | using namespace std; | ||
| - | |||
| - | class Rectangle { | ||
| - | private: | ||
| - | int *width, *height; | ||
| - | public: | ||
| - | Rectangle(int w, int h); | ||
| - | ~Rectangle(); | ||
| - | void setWidth(int w); | ||
| - | void setHeight(int h); | ||
| - | int getWidth(); | ||
| - | int getHeight(); | ||
| - | }; | ||
| - | |||
| - | Rectangle:: | ||
| - | width = new (nothrow) int; | ||
| - | height = new (nothrow) int; | ||
| - | if(width == NULL || height == NULL) { | ||
| - | cerr << " | ||
| - | exit(-1); | ||
| - | } | ||
| - | *width = w; *height = h; | ||
| - | cout << " | ||
| - | } | ||
| - | |||
| - | Rectangle:: | ||
| - | cout << " | ||
| - | delete width; | ||
| - | delete height; | ||
| - | } | ||
| - | |||
| - | void Rectangle:: | ||
| - | void Rectangle:: | ||
| - | int Rectangle:: | ||
| - | int Rectangle:: | ||
| - | |||
| - | int main () { | ||
| - | Rectangle rect(5,6); | ||
| - | cout << "area: " << rect.getWidth() * rect.getHeight() << endl; | ||
| - | return 0; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||