cpp:constructors_destructors
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cpp:constructors_destructors [2020/04/08 09:11] – gthanos | cpp:constructors_destructors [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 171: | Line 171: | ||
</ | </ | ||
+ | ===== Κλήση ενός κατασκευαστή μέσα από άλλο κατασκευαστή ===== | ||
+ | Συχνά μπορεί να θέλουμε να καλέσουμε μέσα από ένα κατασκευαστή έναν άλλο κατασκευαστή. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας ως οποιαδήποτε άλλη μέθοδο. Στο προηγούμενο παράδειγμα, | ||
+ | <code cpp> | ||
+ | Rectangle:: | ||
+ | Rectangle(s, | ||
+ | } | ||
+ | </ | ||
- | Ο παραπάνω τρόπος αρχικοποίησης μπορεί να επεκταθεί και να χρησιμοποιηθεί για την κλήση κατασκευαστών των πεδίων της κλάσης, | + | O ίδιος κώδικας με χρήση //initialization list// μπορεί να γραφεί ως εξής: |
- | <code cpp Cuboid.cpp> | + | <code cpp> |
+ | Rectangle:: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Αρχικοποίηση αντικειμένων που περιέχουν πεδία που περιγράφονται από κλάσεις ===== | ||
+ | |||
+ | Στην προηγούμενη ενότητα είδαμε την κλάση | ||
+ | |||
+ | < | ||
#include < | #include < | ||
using namespace std; | using namespace std; | ||
- | #include " | + | #include " |
class Cuboid { | class Cuboid { | ||
Line 187: | Line 203: | ||
Rectangle rect; | Rectangle rect; | ||
public: | public: | ||
- | Cuboid(Rectangle r, int l); | ||
Cuboid(int w, int h, int l); | Cuboid(int w, int h, int l); | ||
- | void setRectangle(Rectangle r) {rect = r;} | + | |
- | Rectangle getRectangle() | + | |
- | void setLength(int l) { length = l; } | + | |
- | int getLength() const { return length; } | + | Rectangle getRectangle() |
+ | void setLength(int l); | ||
+ | int getLength() const; | ||
int volume(); | int volume(); | ||
}; | }; | ||
+ | </ | ||
- | Cuboid:: | + | <code cpp Cuboid.cpp> |
- | Cuboid:: | + | #include "Cuboid.hpp" |
- | int Cuboid::volume() { | + | Cuboid::Cuboid(int w, int h, int l) { |
- | | + | rect.setWidth(w); |
+ | | ||
+ | length = l; | ||
} | } | ||
- | </ | ||
- | <code cpp CuboidUsage.cpp> | + | Cuboid:: |
- | #include "Cuboid.cpp" | + | rect = r; |
+ | | ||
+ | } | ||
- | int main () { | + | void Cuboid:: |
- | Rectangle | + | Rectangle |
- | Cuboid | + | void Cuboid::setLength(int l) { length = l; } |
- | cout << " | + | int Cuboid::getLength() const { return length; } |
- | Cuboid | + | |
- | cout << " | + | int Cuboid:: |
- | return | + | return |
} | } | ||
</ | </ | ||
- | Παρατηρήστε | + | Οι παραπάνω δύο κατασκευαστές με χρήση member |
< | < | ||
Cuboid:: | Cuboid:: | ||
Line 224: | Line 246: | ||
Στην 1η περίπτωση γίνεται ανάθεση του αντικειμένου //r// στο πεδίο //rect//. Στην 2η περίπτωση καλείται ο κατασκευαστής της κλάσης // | Στην 1η περίπτωση γίνεται ανάθεση του αντικειμένου //r// στο πεδίο //rect//. Στην 2η περίπτωση καλείται ο κατασκευαστής της κλάσης // | ||
+ | |||
+ | Η ανάθεση '' | ||
===== Καταστροφέας της κλάσης ===== | ===== Καταστροφέας της κλάσης ===== |
cpp/constructors_destructors.1586337105.txt.gz · Last modified: 2020/04/08 08:11 (external edit)