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 revisionBoth sides next revision
cpp:classes [2017/05/03 16:28] – [Οι μέθοδοι της κλάσης] gthanoscpp:classes [2017/05/08 07:15] – [Οι μέθοδοι της κλάσης] gthanos
Line 35: Line 35:
 ===== Οι μέθοδοι της κλάσης ===== ===== Οι μέθοδοι της κλάσης =====
  
-Οι μέθοδοι της κλάσης είναι συναρτήσεις οι οποίες έχουν απευθείας πρόσβαση στα πεδία (μεταβλητές) της κλάσης. Οι μέθοδοι ορίζονται μέσα στην κλάση ή ορίζεται το πρότυπο τους μέσα στην κλάση και η υλοποίηση τους εκτός. Από το παραπάνω παράδειγμα παρατηρήστε τους δύο διαφορετικούς τρόπους ορισμού των μεθόδων //setWidth// και //setHeight//.+Οι μέθοδοι της κλάσης είναι συναρτήσεις οι οποίες έχουν απευθείας πρόσβαση στα πεδία (μεταβλητές) της κλάσης. Οι μέθοδοι ορίζονται μέσα στην κλάση ή ορίζεται το πρότυπο τους μέσα στην κλάση και η υλοποίηση τους εκτός. Από το παρακάτω παράδειγμα παρατηρήστε τους δύο διαφορετικούς τρόπους ορισμού των μεθόδων //setWidth// και //setHeight//.
  
 <code c++ Rectangle.cpp> <code c++ Rectangle.cpp>
Line 45: Line 45:
     int width, height;     int width, height;
   public:   public:
 +    int getWidth() const;
 +    int getHeight() const;
     void setWidth(int w);     void setWidth(int w);
     void setHeight(int h) { height = h; }     void setHeight(int h) { height = h; }
 }; };
  
 +int Rectangle::getWidth() const { return width;}
 +int Rectangle::getHeight() const { return height;}
 void Rectangle::setWidth(int w) { width = w; } void Rectangle::setWidth(int w) { width = w; }
 </code> </code>
Line 54: Line 58:
 Οι δύο παραπάνω τρόποι ορισμού μίας μεθόδου της κλάσης είναι ισοδύναμοι με την διαφορά ότι η μέθοδος //setHeight// ορίζεται ως //inline// ακόμη και εάν η λέξη //inline// δεν αναφέρεται ρητά. Για τον ορισμό της μεθόδου //setWidth// εκτός της κλάσης είναι απαραίτητη η χρήση του ονόματος της κλάσης ακολουθούμενη από το //scope operator// (''Rectangle::setWidth(int w)''). Η χρήση του //scope operator// εξασφαλίζει ότι η μέθοδος ανήκει στην κλάση και δεν αποτελεί αυτόνομη μέθοδο του προγράμματος. Οι δύο παραπάνω τρόποι ορισμού μίας μεθόδου της κλάσης είναι ισοδύναμοι με την διαφορά ότι η μέθοδος //setHeight// ορίζεται ως //inline// ακόμη και εάν η λέξη //inline// δεν αναφέρεται ρητά. Για τον ορισμό της μεθόδου //setWidth// εκτός της κλάσης είναι απαραίτητη η χρήση του ονόματος της κλάσης ακολουθούμενη από το //scope operator// (''Rectangle::setWidth(int w)''). Η χρήση του //scope operator// εξασφαλίζει ότι η μέθοδος ανήκει στην κλάση και δεν αποτελεί αυτόνομη μέθοδο του προγράμματος.
  
 +Οι μέθοδοι //getWidth// και //getHeight// έχουν το προσδιοριστή //const// αμέσως μετά τη δήλωση τους. Ο προσδιοριστής //const// αμέσως μετά τη δήλωση, δηλώνει ότι η συγκεκριμένη συνάρτηση **δεν μεταβάλλει το αντικείμενο στο οποίο ανήκει**. Η δήλωση //const// είναι εξαιρετικά σημαντική όταν θέλουμε να χρησιμοποιήσουμε τη συνάρτηση μέσα σε άλλες συναρτήσεις που είτε **α)** ανήκουν στην ίδια κλάση και δεν μεταβάλλουν το αντικείμενο στο οποίο εφαρμόζονται ή **β)** λαμβάνουν ως όρισμα ένα αντικείμενο της κλάσης το οποίο δεν μεταβάλλεται μέσα στο σώμα τους (λαμβάνουν ως παράμετρο μία αναφορά ή ένα δείκτη σε ένα αντικείμενο τύπου //const//).
  
  
cpp/classes.txt · Last modified: 2021/05/06 23:01 (external edit)