This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
|
cpp:constructors_destructors [2020/04/08 08:04] gthanos |
cpp:constructors_destructors [2020/04/08 09:11] gthanos |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Κατασκευαστές και καταστροφείς της κλάσης ====== | ====== Κατασκευαστές και καταστροφείς της κλάσης ====== | ||
| - | Στο προηγούμενο παράδειγμα της κλάσης // | + | Στο προηγούμενο παράδειγμα της κλάσης // |
| <code cpp Rectangle.hpp> | <code cpp Rectangle.hpp> | ||
| Line 38: | Line 38: | ||
| </ | </ | ||
| - | <WRAP center round tip 80%> | + | <WRAP center round info 80%> |
| Σε αναλογία με τις μεθόδους ο κατασκευαστής μπορεί να οριστεί εντός της κλάσης, | Σε αναλογία με τις μεθόδους ο κατασκευαστής μπορεί να οριστεί εντός της κλάσης, | ||
| <code c++ Rectangle.cpp> | <code c++ Rectangle.cpp> | ||
| Line 56: | Line 56: | ||
| Εάν δεν οριστεί κανένας κατασκευαστής σε μία κλάση τότε για την κλάση ορίζεται από τον μεταγλωττιστή ο //default// κατασκευαστής. Ο κατασκευαστής αυτός δεν έχει ορίσματα. Τα πεδία της κλάσης αρχικοποιούνται ως εξής: | Εάν δεν οριστεί κανένας κατασκευαστής σε μία κλάση τότε για την κλάση ορίζεται από τον μεταγλωττιστή ο //default// κατασκευαστής. Ο κατασκευαστής αυτός δεν έχει ορίσματα. Τα πεδία της κλάσης αρχικοποιούνται ως εξής: | ||
| - για πεδία που έχουν βασικού τύπους (int, double, char κλπ) οι τιμές είναι τυχαίες. | - για πεδία που έχουν βασικού τύπους (int, double, char κλπ) οι τιμές είναι τυχαίες. | ||
| - | - για πεδία | + | - για πεδία |
| - | Εάν έχετε δηλώσει τουλάχιστον ένα κατασκευαστή που δεν είναι ο //default// κατασκευαστής χωρίς παραμέτρους τότε ο μεταγλωττιστής | + | Εάν έχετε δηλώσει τουλάχιστον ένα κατασκευαστή που δεν είναι ο //default// κατασκευαστής χωρίς παραμέτρους τότε ο // |
| ===== Υπερφόρτωση κατασκευαστών ===== | ===== Υπερφόρτωση κατασκευαστών ===== | ||
| Line 132: | Line 132: | ||
| Rectangle:: | Rectangle:: | ||
| </ | </ | ||
| + | |||
| + | Τελικά η κλάση Rectangle μπορεί να γραφεί ως εξής: | ||
| + | |||
| + | <code cpp Rectangle.hpp> | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | class Rectangle { | ||
| + | private: | ||
| + | int width, height; | ||
| + | public: | ||
| + | Rectangle(int w, int h); | ||
| + | Rectangle(int s); | ||
| + | Rectangle(); | ||
| + | void setWidth(int w); | ||
| + | void setHeight(int h); | ||
| + | int getWidth() const; | ||
| + | int getHeight() const; | ||
| + | }; | ||
| + | |||
| + | Rectangle:: | ||
| + | } | ||
| + | |||
| + | Rectangle:: | ||
| + | } | ||
| + | |||
| + | Rectangle:: | ||
| + | srand(time(NULL)); | ||
| + | width = rand() % 10 + 1; height = rand() % 10 + 1; | ||
| + | } | ||
| + | |||
| + | void Rectangle:: | ||
| + | void Rectangle:: | ||
| + | int Rectangle:: | ||
| + | int Rectangle:: | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| Ο παραπάνω τρόπος αρχικοποίησης μπορεί να επεκταθεί και να χρησιμοποιηθεί για την κλήση κατασκευαστών των πεδίων της κλάσης, | Ο παραπάνω τρόπος αρχικοποίησης μπορεί να επεκταθεί και να χρησιμοποιηθεί για την κλήση κατασκευαστών των πεδίων της κλάσης, | ||