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/14 07:40] – gthanos | cpp:constructors [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 39: | Line 39: | ||
| return 0; | return 0; | ||
| } | } | ||
| - | </ | ||
| - | |||
| - | Για την μεταγλώττιση αρκεί να μεταγλωττισετε κάθε επιμέρους κλάση ξεχωριστά και στη συνέχεια να δημιουργήσετε το τελικό εκτελέσιμο. Στο συγκεκριμένο παράδειγμα, | ||
| - | < | ||
| - | g++ -Wall -g Rectangle.cpp -c | ||
| - | g++ -Wall -g Rectangle.o RectangleUsage.cpp | ||
| </ | </ | ||
| Line 60: | Line 54: | ||
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | === Μεταγλώττιση === | ||
| + | |||
| + | Για την μεταγλώττιση αρκεί να μεταγλωττίσετε κάθε επιμέρους αρχείο κλάσης ξεχωριστά και στη συνέχεια να δημιουργήσετε το τελικό εκτελέσιμο. Στο συγκεκριμένο παράδειγμα, | ||
| + | < | ||
| + | g++ -Wall -g Rectangle.cpp -c | ||
| + | g++ -Wall -g Rectangle.o RectangleUsage.cpp | ||
| + | </ | ||
| + | |||
| ===== Default κατασκευαστής ===== | ===== Default κατασκευαστής ===== | ||
| Line 71: | Line 74: | ||
| ===== Υπερφόρτωση κατασκευαστών ===== | ===== Υπερφόρτωση κατασκευαστών ===== | ||
| - | Σε αναλογία με την [[cpp: | + | Σε αναλογία με την [[cpp: |
| <code cpp Rectangle.hpp> | <code cpp Rectangle.hpp> | ||
| Line 91: | Line 94: | ||
| int getHeight() const; | int getHeight() const; | ||
| }; | }; | ||
| + | </ | ||
| + | |||
| + | <code cpp Rectangle.cpp> | ||
| + | #include " | ||
| Rectangle:: | Rectangle:: | ||
| Line 131: | Line 138: | ||
| </ | </ | ||
| - | Αντί για την παραπάνω δήλωση θα μπορούσατε να γράψετε ισοδύναμα: | + | Αντί για την παραπάνω δήλωση θα μπορούσατε να γράψετε |
| <code cpp> | <code cpp> | ||
| Rectangle:: | Rectangle:: | ||
| Line 137: | Line 144: | ||
| } | } | ||
| </ | </ | ||
| - | ή | + | ή __ισοδύναμα__ |
| <code cpp> | <code cpp> | ||
| Rectangle:: | Rectangle:: | ||
| </ | </ | ||
| - | Τελικά η κλάση Rectangle μπορεί να γραφεί | + | Ο παραπάνω τρόπος γραφής ονομάζεται στη βιβλιογραφία __//member initilization list// |
| <code cpp Rectangle.hpp> | <code cpp Rectangle.hpp> | ||
| Line 162: | Line 169: | ||
| int getHeight() const; | int getHeight() const; | ||
| }; | }; | ||
| + | </ | ||
| + | |||
| + | <code cpp Rectangle.cpp> | ||
| + | #include " | ||
| Rectangle:: | Rectangle:: | ||
| Line 182: | Line 193: | ||
| ===== Κλήση ενός κατασκευαστή μέσα από άλλο κατασκευαστή ===== | ===== Κλήση ενός κατασκευαστή μέσα από άλλο κατασκευαστή ===== | ||
| - | Συχνά μπορεί να θέλουμε να καλέσουμε μέσα από ένα κατασκευαστή έναν άλλο κατασκευαστή. Μπορείτε να το κάνετε αυτό | + | Συχνά μπορεί να θέλουμε να καλέσουμε μέσα από ένα κατασκευαστή έναν άλλο κατασκευαστή. Μπορείτε να το κάνετε αυτό |
| <code cpp> | <code cpp> | ||
| Line 190: | Line 201: | ||
| </ | </ | ||
| - | O ίδιος κώδικας με χρήση // | + | Ο ίδιος κώδικας με χρήση //member |
| <code cpp> | <code cpp> | ||
| Line 199: | Line 210: | ||
| ===== Αρχικοποίηση αντικειμένων που περιέχουν πεδία που περιγράφονται από κλάσεις ===== | ===== Αρχικοποίηση αντικειμένων που περιέχουν πεδία που περιγράφονται από κλάσεις ===== | ||
| - | Στην προηγούμενη ενότητα είδαμε την κλάση Cuboid που περιγράφει την κλάση του κυβοειδούς και περιέχει ένα πεδίο τύπου Rectangle. Εδώ θα δούμε πως μπορούμε να ορίσουμε ένα ή περισσότερους κατασκευαστές για τη συγκεκριμένη κλάση. | + | Στην προηγούμενη ενότητα είδαμε την κλάση Cuboid που περιγράφει την κλάση του κυβοειδούς και περιέχει ένα πεδίο τύπου Rectangle. Εδώ θα δούμε πως μπορούμε να ορίσουμε ένα ή περισσότερους κατασκευαστές για την κλάση |
| <code cpp Cuboid.hpp> | <code cpp Cuboid.hpp> | ||
| Line 247: | Line 258: | ||
| </ | </ | ||
| - | Οι παραπάνω δύο κατασκευαστές με χρήση member initialιzation list μπορούν να γραφούν ως εξής: | + | Οι παραπάνω δύο κατασκευαστές με χρήση |
| < | < | ||
| Line 254: | Line 265: | ||
| </ | </ | ||
| - | Στον πρώτο κατασκευαστή με τα δύο ορίσματα γίνεται ανάθεση του αντικειμένου //r// στο πεδίο //rect//, αντιγράφοντας | + | Στον πρώτο κατασκευαστή με τα δύο ορίσματα γίνεται ανάθεση του αντικειμένου //r// στο πεδίο //rect//, αντιγράφοντας κάθε πεδίο της παραμέτρου //r// στο αντίστοιχο πεδίο |
cpp/constructors.1586850004.txt.gz · Last modified: 2020/04/14 06:40 (external edit)
