User Tools

Site Tools


cpp:const_member_functions

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
Last revisionBoth sides next revision
cpp:const_member_functions [2017/05/15 07:38] gthanoscpp:const_member_functions [2021/05/07 08:50] – [Υπερφόρτωση const και non-const συναρτήσεων] gthanos
Line 1: Line 1:
 ====== Const μέθοδοι της κλάσης ====== ====== Const μέθοδοι της κλάσης ======
  
-Όταν δηλώνεται ένα αντικείμενο ως //const// (όπως παρακάτω), τότε οι μεταβλητές του αντικειμένου μπορούν μόνο να διαβαστούν αλλά όχι να μεταβληθούν, πρόκειται δηλαδή για ένα αμετάβλητο αντικείμενο. Παρατηρήστε βέβαια, ότι ο κατασκευαστής του αντικειμένου αρχικοποιεί κανονικά το αντικείμενο και μεταβάλλει τις μεταβλητές του.+Όταν δηλώνεται ένα αντικείμενο ως //const// (όπως παρακάτω), τότε τα πεδία του αντικειμένου μπορούν μόνο να διαβαστούν αλλά όχι να μεταβληθούν, πρόκειται δηλαδή για ένα αμετάβλητο αντικείμενο. Εξαίρεση αποτελεί ο κατασκευαστής του αντικειμένου, ο οποίος αρχικοποιεί κανονικά το αντικείμενο και μεταβάλλει τις μεταβλητές του.
  
 <code cpp Rectangle.cpp> <code cpp Rectangle.cpp>
Line 41: Line 41:
 </code> </code>
  
-Σε αυτή την περίπτωση λαμβάνετε το παρακάτω μήνυμα λάθους:+Σε αυτή την περίπτωση λαμβάνετε το παρακάτω μήνυμα λάθους από το μεγαγλωττιστή:
 <code> <code>
 Rectangle5.cpp: In function ‘int main()’:                                                                                                                                                                           Rectangle5.cpp: In function ‘int main()’:                                                                                                                                                                          
Line 118: Line 118:
   cout << "rect1 width: " << rect1.getWidth() << endl;   cout << "rect1 width: " << rect1.getWidth() << endl;
   cout << "rect2 width: " << rect2.getWidth() << endl;   cout << "rect2 width: " << rect2.getWidth() << endl;
 +}
 </code> </code>
 +
 +<WRAP center round tip 80%>
 +Στο παραπάνω παράδειγμα, η ύπαρξη της //non-const// μεθόδου στο συγκεκριμένο παράδειγμα είναι πλεονασμός καθώς η //const// μέθοδος μπορεί να κληθεί και από //non-const// αντικείμενα. Όπως δείξαμε ο περιορισμός ισχύει μόνο κατά το αντίστροφο, δηλαδή ένα //const// αντικείμενο δεν μπορεί να καλέσει μία //non-const// μέθοδο.
 +</WRAP>
 +
  
  
  
cpp/const_member_functions.txt · Last modified: 2021/05/07 07:50 (external edit)