Junior
Μίλησε για τις στατικές μεθόδους σε C/C++.
sobes.tech AI
Απάντηση από AI
Μέθοδος σταθερή είναι μια μέθοδος κλάσης που δηλώνεται με τη λέξη-κλειδί const μετά από τη λίστα παραμέτρων. Διασφαλίζει ότι η μέθοδος δεν τροποποιεί την κατάσταση του αντικειμένου της κλάσης (this).
Βασικές ιδιότητες και εφαρμογές:
- Εγγύηση αμεταβλητότητας: Μέσα σε μια σταθερή μέθοδο, δεν μπορεί να τροποποιηθεί άμεσα ή έμμεσα το μη στατικό μέλος δεδομένων του αντικειμένου.
- Κλήση για σταθερά αντικείμενα: Οι σταθερές μέθοδοι μπορούν να καλούνται τόσο για σταθερά όσο και για μη σταθερά αντικείμενα. Οι μη σταθερές μέθοδοι μπορούν να καλούνται μόνο για μη σταθερά αντικείμενα.
- Υπερφόρτωση: Η μέθοδος μπορεί να υπερφορτωθεί ανάλογα με τη σταθερότητα. Αυτό επιτρέπει να υπάρχουν δύο μέθοδοι με την ίδια υπογραφή (όνομα και παραμέτρους), αλλά η μία θα είναι σταθερή και η άλλη όχι.
- Εφαρμογή: Χρησιμοποιούνται για μεθόδους πρόσβασης (getters), που απλώς επιστρέφουν την τιμή του μέλους δεδομένων χωρίς να τροποποιούν το αντικείμενο, καθώς και σε συναρτήσεις που δέχονται σταθερές αναφορές ή δείκτες σε αντικείμενα.
Παράδειγμα:
class MyClass {
public:
int getValue() const { // Σταθερή μέθοδος
// Μπορεί να διαβάσει member_ = 10;, αλλά όχι να γράψει
return member_;
}
void setValue(int val) { // Μη σταθερή μέθοδος
member_ = val; // Μπορεί να τροποποιήσει το μέλος δεδομένων
}
private:
int member_;
};
void printValue(const MyClass& obj) {
obj.getValue(); // ΟΚ: καλείται η σταθερή μέθοδος για σταθερό αντικείμενο
// obj.setValue(20); // Σφάλμα: δεν μπορεί να καλεστεί μη σταθερή μέθοδος για σταθερό αντικείμενο
}