Sobes.tech
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); // Σφάλμα: δεν μπορεί να καλεστεί μη σταθερή μέθοδος για σταθερό αντικείμενο
}