Sobes.tech
Junior

Porozprávaj o konštantných metódach v C/C++.

sobes.tech AI

Odpoveď od AI

Konštantná metóda je metóda triedy, ktorá je deklarovaná kľúčovým slovom const za zoznamom parametrov. Zaručuje, že metóda nezmení stav objektu triedy (this).

Hlavné vlastnosti a použitia:

  • Záruka nemennosti: Vo vnútri konštantnej metódy nemožno priamo alebo nepriamo meniť nestatické členy dát objektu.
  • Volanie pre konštantné objekty: Konštantné metódy môžu byť volané ako pre konštantné, tak aj pre nekonštantné objekty. Nekonštantné metódy môžu byť volané iba pre nekonštantné objekty.
  • Preťažovanie: Metóda môže byť preťažovaná podľa vlastnosti konštantnosti. To umožňuje mať dve metódy s rovnakou signatúrou (názvom a parametrami), ale jedna bude konštantná a druhá nie.
  • Použitie: Používajú sa pre metódy prístupu (getter-y), ktoré jednoducho vracajú hodnotu člena dát, bez toho, aby menili objekt, ako aj v funkciách, ktoré prijímajú konštantné referencie alebo ukazovatele na objekty.

Príklad:

class MyClass {
public:
    int getValue() const { // Konštantná metóda
        // Môže čítať member_ = 10;, ale nie písať
        return member_;
    }

    void setValue(int val) { // Nekonštantná metóda
        member_ = val; // Môže meniť člen dát
    }

private:
    int member_;
};

void printValue(const MyClass& obj) {
    obj.getValue(); // OK: volanie konštantnej metódy pre konštantný objekt
    // obj.setValue(20); // Chyba: nie je možné volať nekonštantnú metódu pre konštantný objekt
}