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
}