This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | Previous revision Next revision Both sides next revision | ||
|
cpp:static_members [2017/05/09 19:32] |
cpp:static_members [2017/05/09 20:31] gthanos |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Στατικά μέλη της κλάσης ====== | ||
| + | |||
| + | Σε αναλογία με τη Java μία κλάση μπορεί να έχει στατικά μέλη, πεδία και μεθόδους. Κάθε στατικό πεδίο αποτελεί μεταβλητή της κλάσης (//class variable// | ||
| + | |||
| + | <code cpp RectangleWithStaticMember.cpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | class Rectangle { | ||
| + | private: | ||
| + | int width, height; | ||
| + | public: | ||
| + | static int rectangles; | ||
| + | | ||
| + | Rectangle(int w, int h); | ||
| + | Rectangle(int s); | ||
| + | int getWidth() const; | ||
| + | int getHeight() const; | ||
| + | void setWidth(int w); | ||
| + | void setHeight(int h); | ||
| + | static int getRectanglesNumber(); | ||
| + | }; | ||
| + | |||
| + | int Rectangle:: | ||
| + | |||
| + | Rectangle:: | ||
| + | width = w; height = h; | ||
| + | rectangles++; | ||
| + | } | ||
| + | |||
| + | Rectangle:: | ||
| + | width = height = s; | ||
| + | rectangles++; | ||
| + | } | ||
| + | |||
| + | int Rectangle:: | ||
| + | int Rectangle:: | ||
| + | void Rectangle:: | ||
| + | void Rectangle:: | ||
| + | |||
| + | static int getRectanglesNumber() { | ||
| + | //width++; // this is not allowed. | ||
| + | return Rectangle:: | ||
| + | } | ||
| + | |||
| + | int main() { | ||
| + | Rectangle rect1(3,4); | ||
| + | Rectangle rect2(5); | ||
| + | cout << " | ||
| + | cout << " | ||
| + | cout << " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <WRAP center round info 80%> | ||
| + | Στον παραπάνω κώδικα παρατηρούμε το εξής: | ||
| + | - Η αρχικοποίηση της στατικής μεταβλητής γίνεται έξω από την κλάση. Η αρχικοποίηση εκτός της κλάσης (όπως παραπάνω) είναι υποχρεωτική. Για το λόγο αυτό η στατική μεταβλητή είναι αναγκαίο να δηλωθεί ως // | ||
| + | - Η πρόσβαση στα στατικά πεδία της κλάσης μπορεί να γίνει με τους εξής τρόπους | ||
| + | - Με χρήση του ονόματος της κλάσης ως εξής. '' | ||
| + | - Με χρήση ενός υφιστάμενου αντικειμένου, | ||
| + | - Η στατική μέθοδος '' | ||
| + | </ | ||