Const

tharos

Słowem kluczowym const deklaruje się tzw. stałe. Obiekty z modyfikatorem const mogą być inicjalizowane, natomiast nie mogą być przypisywane poza ich inicjalizacją, np.

// ...
int a = 0;
const int b = 1;
 
a = 10;
// b=11;  Błąd! Obiekt z modyfikatorem const nie może być zmieniany

Możliwe jest użycie funkcji składowych z przydomkiem const, dzięki temu funkcja nie będzie modyfikować jego danych składowych. Przyklad:

// ..
class przykladowa
{
  public: 
    void funkcja_1(void)const;
    void funkcja_2();
  //...
};
 
int main()
{
  przykladowa a;
  const przykladowa b;
 
  a.funkcja_1();
  b.funkcja_1();
 
  a.funkcja_2();
  // b.funkcja_2();  ? bład!
}

Stałe wskaźniki i wskaźniki do stałych

Stały wskaźnik to wskaźnik, który ustawia się raz na obiekcie i nie można go zmienić:

int a;
int* const b = &a;

Wskaźnik do obiektu stałego traktuje swój wskaźnik jak stałą. Nie trzeba go od razu definiować, można to zrobić później.

const *int a;
int b, c;
a = &b;
a = &c;

Stałe metody

Jeżeli dana metoda klasy zostanie określona jako const to nie będzie mogła ona zmieniać pól (atrybutów) tejże klasy.

class A
{
public:
    int a;
    int b;
 
    void stala_metoda() const{
        cout << a << " " << b << endl; // moze odczytywać pola(atrybuty) klasy
            //a++; // -> Zabronione z powodu słowa const. 
        //--b // -> analogicznie
    };
};

Zobacz też:

2 komentarzy

Jest to mój pierwszy artykuł, więc prosze o wyrozumiałość ;)