This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
cpp:object_creation [2019/04/19 09:27] gthanos |
cpp:object_creation [2021/05/07 06:22] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Δημιουργία αντικειμένων ====== | ||
| - | |||
| - | Η δημιουργία αντικειμένων γίνεται με κλήση του αντίστοιχου κατασκευαστή ως εξής: | ||
| - | <code c++ Rectangle.cpp> | ||
| - | #include < | ||
| - | using namespace std; | ||
| - | |||
| - | class Rectangle { | ||
| - | private: | ||
| - | int width, height; | ||
| - | public: | ||
| - | Rectangle(int w, int h); | ||
| - | Rectangle(int s); | ||
| - | Rectangle(); | ||
| - | int getWidth() const; | ||
| - | int getHeight() const; | ||
| - | void setWidth(int w); | ||
| - | void setHeight(int h); | ||
| - | }; | ||
| - | |||
| - | Rectangle:: | ||
| - | Rectangle:: | ||
| - | Rectangle:: | ||
| - | |||
| - | int Rectangle:: | ||
| - | int Rectangle:: | ||
| - | void Rectangle:: | ||
| - | void Rectangle:: | ||
| - | |||
| - | int main() { | ||
| - | Rectangle rect1(3,4); | ||
| - | Rectangle rect2(5); | ||
| - | Rectangle rect3; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ο παραπάνω κώδικας δημιουργεί 3 αντικείμενα της κλάσης // | ||
| - | |||
| - | <WRAP center round tip 80%> | ||
| - | Παρατηρήστε ότι για το τελευταίο αντικείμενο δεν χρησιμοποιούνται παρενθέσεις κατά την κλήση του καστασκευαστή, | ||
| - | <code c++> | ||
| - | Rectangle rect3(); // this is an error | ||
| - | </ | ||
| - | Η χρήση παρενθέσεων είναι λανθασμένη με συνέπεια να λάγετε μήνυμα λάθους από τον μεταγλωττιστή. | ||
| - | </ | ||
| - | |||
| - | ===== Εναλλακτικοί τρόποι κλήσης του κατασκευαστή της κλάσης ===== | ||
| - | |||
| - | Εκτός από την χρήση παρενθέσεων για την κλήση του καστασκευαστή της κλάσης όταν αυτός έχει ορίσματα υπάρχουν οι παρακάτω επιπλέον τρόποι κλήσης κατασκευαστών: | ||
| - | |||
| - | === 1. Κατασκευαστές με μόνο μία παράμετρο === | ||
| - | |||
| - | Στην περίπτωση που έχουμε μόνο μία παράμετρο μπορούμε να καλέσουμε τον κατασκευαστή της κλάσης με χρήση του τελεστή ίσον (' | ||
| - | < | ||
| - | Για παράδειγμα, | ||
| - | <code c++> | ||
| - | int main () { | ||
| - | Rectangle rect=5; | ||
| - | cout << "area: " << rect.getWidth() * rect.getHeight() << endl; | ||
| - | return 0; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Σε αυτή την περίτπωση καλείται ο κατασκευαστής που έχει ένα μόνο όρισμα το οποίο λαμβάνει την τιμή 5. Το εμβαδό του παραλληλογράμμου που εκτυπώνεται είναι 25 (5x5). | ||
| - | |||
| - | === 2. Χρήση αγκίστρων αντί για παρενθέσεις === | ||
| - | |||
| - | Η C++ δίνει την δυνατότητα χρήσης αγκίστρων αντί για παρενθέσεις προκειμένου να καλέσουμε τον κατασκευαστή της κλάσης. Ο τρόπος αυτός έχει τις εξής δύο παραλαγές: | ||
| - | |||
| - | == Σε αναλογία με τη χρήση παρενθέσεων == | ||
| - | |||
| - | <code c++> | ||
| - | int main () { | ||
| - | Rectangle rect {5,6}; // calls Rectangle(int w, int h) | ||
| - | cout << "area: " << rect.getWidth() * rect.getHeight() << endl; | ||
| - | return 0; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Καλείται ο κατασκευαστής της κλάσης με δύο ορίσματα (//width=5, height=6// | ||
| - | |||
| - | == Με χρήση του τελεστή = πριν τα άγκιστρα == | ||
| - | |||
| - | <code c++ RectangleInitialization.cpp> | ||
| - | int main () { | ||
| - | Rectangle rect = {5,6}; // calls Rectangle(int w, int h) | ||
| - | Rectangle rects[2] = {{4,5}, {5,6}}; // calls Rectangle(int w, int h) for each table element | ||
| - | cout << " | ||
| - | cout << " | ||
| - | cout << " | ||
| - | return 0; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Οι παραπάνω δύο τρόποι είναι ισοδύναμοι εάν πρόκειται να αρχικοποιήσουμε ένα μεμονομένο αντικείμενο. Στην περίπτωση που θέλουμε να αρχικοποιήσουμε πίνακες από αντικείμενα, | ||
| - | |||