cpp:constructors
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cpp:constructors [2020/04/08 10:35] – gthanos | cpp:constructors [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Κατασκευαστές της κλάσης ====== | ====== Κατασκευαστές της κλάσης ====== | ||
- | Στο προηγούμενο παράδειγμα της κλάσης // | + | Στο προηγούμενο παράδειγμα της κλάσης // |
<code cpp Rectangle.hpp> | <code cpp Rectangle.hpp> | ||
Line 17: | Line 17: | ||
int getHeight() const; | int getHeight() const; | ||
}; | }; | ||
+ | </ | ||
+ | |||
+ | <code cpp Rectangle.cpp> | ||
+ | #include " | ||
Rectangle:: | Rectangle:: | ||
width = w; height = h; | width = w; height = h; | ||
} | } | ||
- | |||
void Rectangle:: | void Rectangle:: | ||
void Rectangle:: | void Rectangle:: | ||
Line 40: | Line 43: | ||
<WRAP center round info 80%> | <WRAP center round info 80%> | ||
Σε αναλογία με τις μεθόδους ο κατασκευαστής μπορεί να οριστεί εντός της κλάσης, | Σε αναλογία με τις μεθόδους ο κατασκευαστής μπορεί να οριστεί εντός της κλάσης, | ||
- | < | + | < |
class Rectangle { | class Rectangle { | ||
private: | private: | ||
Line 51: | Line 54: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | === Μεταγλώττιση === | ||
+ | |||
+ | Για την μεταγλώττιση αρκεί να μεταγλωττίσετε κάθε επιμέρους αρχείο κλάσης ξεχωριστά και στη συνέχεια να δημιουργήσετε το τελικό εκτελέσιμο. Στο συγκεκριμένο παράδειγμα, | ||
+ | < | ||
+ | g++ -Wall -g Rectangle.cpp -c | ||
+ | g++ -Wall -g Rectangle.o RectangleUsage.cpp | ||
+ | </ | ||
+ | |||
===== Default κατασκευαστής ===== | ===== Default κατασκευαστής ===== | ||
Line 62: | Line 74: | ||
===== Υπερφόρτωση κατασκευαστών ===== | ===== Υπερφόρτωση κατασκευαστών ===== | ||
- | Σε αναλογία με την [[cpp: | + | Σε αναλογία με την [[cpp: |
<code cpp Rectangle.hpp> | <code cpp Rectangle.hpp> | ||
Line 82: | Line 94: | ||
int getHeight() const; | int getHeight() const; | ||
}; | }; | ||
+ | </ | ||
+ | |||
+ | <code cpp Rectangle.cpp> | ||
+ | #include " | ||
Rectangle:: | Rectangle:: | ||
Line 122: | Line 138: | ||
</ | </ | ||
- | Αντί για την παραπάνω δήλωση θα μπορούσατε να γράψετε ισοδύναμα: | + | Αντί για την παραπάνω δήλωση θα μπορούσατε να γράψετε |
<code cpp> | <code cpp> | ||
Rectangle:: | Rectangle:: | ||
Line 128: | Line 144: | ||
} | } | ||
</ | </ | ||
- | ή | + | ή __ισοδύναμα__ |
<code cpp> | <code cpp> | ||
Rectangle:: | Rectangle:: | ||
</ | </ | ||
- | Τελικά η κλάση Rectangle μπορεί να γραφεί | + | Ο παραπάνω τρόπος γραφής ονομάζεται στη βιβλιογραφία __//member initilization list// |
<code cpp Rectangle.hpp> | <code cpp Rectangle.hpp> | ||
Line 153: | Line 169: | ||
int getHeight() const; | int getHeight() const; | ||
}; | }; | ||
+ | </ | ||
+ | |||
+ | <code cpp Rectangle.cpp> | ||
+ | #include " | ||
Rectangle:: | Rectangle:: | ||
Line 173: | Line 193: | ||
===== Κλήση ενός κατασκευαστή μέσα από άλλο κατασκευαστή ===== | ===== Κλήση ενός κατασκευαστή μέσα από άλλο κατασκευαστή ===== | ||
- | Συχνά μπορεί να θέλουμε να καλέσουμε μέσα από ένα κατασκευαστή έναν άλλο κατασκευαστή. Μπορείτε να το κάνετε αυτό | + | Συχνά μπορεί να θέλουμε να καλέσουμε μέσα από ένα κατασκευαστή έναν άλλο κατασκευαστή. Μπορείτε να το κάνετε αυτό |
<code cpp> | <code cpp> | ||
Line 181: | Line 201: | ||
</ | </ | ||
- | O ίδιος κώδικας με χρήση // | + | Ο ίδιος κώδικας με χρήση //member |
<code cpp> | <code cpp> | ||
Line 190: | Line 210: | ||
===== Αρχικοποίηση αντικειμένων που περιέχουν πεδία που περιγράφονται από κλάσεις ===== | ===== Αρχικοποίηση αντικειμένων που περιέχουν πεδία που περιγράφονται από κλάσεις ===== | ||
- | Στην προηγούμενη ενότητα είδαμε την κλάση Cuboid που περιγράφει την κλάση του κυβοειδούς και περιέχει ένα πεδίο τύπου Rectangle. Εδώ θα δούμε πως μπορούμε να ορίσουμε ένα ή περισσότερους κατασκευαστές για τη συγκεκριμένη κλάση. | + | Στην προηγούμενη ενότητα είδαμε την κλάση Cuboid που περιγράφει την κλάση του κυβοειδούς και περιέχει ένα πεδίο τύπου Rectangle. Εδώ θα δούμε πως μπορούμε να ορίσουμε ένα ή περισσότερους κατασκευαστές για την κλάση |
<code cpp Cuboid.hpp> | <code cpp Cuboid.hpp> | ||
Line 238: | Line 258: | ||
</ | </ | ||
- | Οι παραπάνω δύο κατασκευαστές με χρήση member initialιzation list μπορούν να γραφούν ως εξής: | + | Οι παραπάνω δύο κατασκευαστές με χρήση |
< | < | ||
- | Cuboid:: | + | Cuboid:: |
Cuboid:: | Cuboid:: | ||
</ | </ | ||
- | Στην 1η περίπτωση | + | Στον πρώτο κατασκευαστή με τα δύο ορίσματα γίνεται ανάθεση του αντικειμένου //r// στο πεδίο //rect//, αντιγράφοντας κάθε |
- | + | ||
- | Η ανάθεση '' | + | |
cpp/constructors.1586342141.txt.gz · Last modified: 2020/04/08 09:35 (external edit)