User Tools

Site Tools


cpp:classes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
cpp:classes [2017/05/08 07:17] – [Οι μέθοδοι της κλάσης] gthanoscpp:classes [2020/04/08 08:06] gthanos
Line 13: Line 13:
     void setWidth(int w);     void setWidth(int w);
     void setHeight(int h);     void setHeight(int h);
-    int getWidth(); +    int getWidth() const
-    int getHeight();+    int getHeight() const;
 }; };
  
 void Rectangle::setWidth(int w) { width = w; } void Rectangle::setWidth(int w) { width = w; }
 void Rectangle::setHeight(int h) { height = h; } void Rectangle::setHeight(int h) { height = h; }
-int Rectangle::getWidth() { return width; } +int Rectangle::getWidth() const { return width; } 
-int Rectangle::getHeight() { return height; }+int Rectangle::getHeight() const { return height; }
  
 int main () { int main () {
Line 31: Line 31:
 </code> </code>
  
-Η παραπάνω κλάση διαθέτει τα πεδία τύπου //int width, height// και τις μεθόδους //setWidth, setHeight, getWidth, getHeight//. Η κλάση δεν διαθέτει κατασκευαστή. Η δήλωση ''Rect rect;'' στη μέθοδο //main()// δημιουργεί ένα αντικείμενο με κλήση του default κατασκευαστή.+Η παραπάνω κλάση διαθέτει τα πεδία τύπου //int width, height// και τις μεθόδους //setWidth, setHeight, getWidth, getHeight//. Η κλάση δεν διαθέτει κατασκευαστή. Η δήλωση ''Rect rect;'' στη μέθοδο //main()// δημιουργεί ένα αντικείμενο με κλήση του //default// κατασκευαστή.
  
 ===== Οι μέθοδοι της κλάσης ===== ===== Οι μέθοδοι της κλάσης =====
  
-Οι μέθοδοι της κλάσης είναι συναρτήσεις οι οποίες έχουν απευθείας πρόσβαση στα πεδία (μεταβλητές) της κλάσης. Οι μέθοδοι ορίζονται μέσα στην κλάση ή ορίζεται το πρότυπο τους μέσα στην κλάση και η υλοποίηση τους εκτός. Από το παρακάτω παράδειγμα παρατηρήστε τους δύο διαφορετικούς τρόπους ορισμού των μεθόδων //setWidth// και //setHeight//.+Οι μέθοδοι της κλάσης είναι συναρτήσεις οι οποίες έχουν απευθείας πρόσβαση στα πεδία (μεταβλητές) της κλάσης. Οι μέθοδοι ορίζονται μέσα στην κλάση ή ορίζεται το πρότυπο τους μέσα στην κλάση και η υλοποίηση τους εκτός. Από το παρακάτω παράδειγμα παρατηρήστε τους δύο διαφορετικούς τρόπους ορισμού των μεθόδων //setWidth// και //setHeight//. H υλοποίηση της //setHeight// ορίζεται μέσα στη δήλωση της κλάσης, ενώ η υλοποιηση της //setWidth// έξω από την κλάση.
  
 <code c++ Rectangle.cpp> <code c++ Rectangle.cpp>
Line 59: Line 59:
  
 <WRAP center round important 80%> <WRAP center round important 80%>
-Οι μέθοδοι //getWidth// και //getHeight// έχουν το προσδιοριστή **const** αμέσως μετά τη δήλωση τους. Ο προσδιοριστής //const// αμέσως μετά τη δήλωση, δηλώνει ότι η συγκεκριμένη συνάρτηση **δεν μεταβάλλει το αντικείμενο στο οποίο ανήκει**.  +Οι μέθοδοι //getWidth// και //getHeight// έχουν το προσδιοριστή **const** αμέσως μετά τη δήλωση τους. Ο προσδιοριστής //const// αμέσως μετά τη δήλωση, δηλώνει ότι η συγκεκριμένη συνάρτηση **δεν μεταβάλλει το αντικείμενο στο οποίο ανήκει**.
- +
-Η δήλωση //const// είναι εξαιρετικά σημαντική όταν θέλουμε να χρησιμοποιήσουμε τη συνάρτηση μέσα σε άλλες συναρτήσεις που είτε **α)** ανήκουν στην ίδια κλάση και δεν μεταβάλλουν το αντικείμενο στο οποίο εφαρμόζονται ή **β)** λαμβάνουν ως όρισμα ένα αντικείμενο της κλάσης το οποίο δεν μεταβάλλεται μέσα στο σώμα τους (λαμβάνουν ως παράμετρο μία αναφορά ή ένα δείκτη σε ένα αντικείμενο τύπου //const//).+
 </WRAP> </WRAP>
  
  
cpp/classes.txt · Last modified: 2021/05/06 23:01 (external edit)