Udostępnij za pośrednictwem


Wartości stałe

Słowo kluczowe const określa, która wartość zmiennej jest stała i informuje o tym kompilator, aby zapobiec jego modyfikacjom przez programistę.

// constant_values1.cpp
int main() {
   const int i = 5;
   i = 10;   // C3892
   i++;   // C2105
}

W języku C++, można użyć słowa kluczowego const zamiast dyrektywy preprocesora #define do definiowania wartości stałych.Wartości zdefiniowane za pomocą const podlegają kontroli typów i mogą być używane zamiast wyrażeń stałych.W języku C++, można określić rozmiar tablicy ze zmienną const w następujący sposób:

// constant_values2.cpp
// compile with: /c
const int maxarray = 255;
char store_char[maxarray];  // allowed in C++; not allowed in C

W języku C, domyślne wartości są stałe w zewnętrznych powiązaniach, więc mogą być one wyświetlane tylko w plikach źródłowych.W języku C++, wartości stałe są domyślne wewnątrz powiązania, co pozwala im pojawiać się w plikach nagłówkowych.

Słowa kluczowego const można również użyć w deklaracjach wskaźnika.

// constant_values3.cpp
int main() {
   char *mybuf = 0, *yourbuf;
   char *const aptr = mybuf;
   *aptr = 'a';   // OK
   aptr = yourbuf;   // C3892
}

Wskaźnik do zmiennej, zadeklarowanej jako const może być przypisany tylko do wskaźnika, który także jest zadeklarowany, jako const.

// constant_values4.cpp
#include <stdio.h>
int main() {
   const char *mybuf = "test";
   char *yourbuf = "test2";
   printf_s("%s\n", mybuf);

   const char *bptr = mybuf;   // Pointer to constant data
   printf_s("%s\n", bptr);
   
   // *bptr = 'a';   // Error
}

Dane wyjściowe

test
test

Można użyć wskaźników do danych stałych, takich jak parametry funkcji, aby zapobiec modyfikowaniu parametru przekazywanego za pomocą wskaźnika funkcji.

Dla obiektów, które zostały zadeklarowane jako const, może wywołać tylko Stałe elementy członkowskie funkcji.Dzięki temu stały obiekt nie jest nigdy modyfikowany.

birthday.getMonth();    // Okay
birthday.setMonth( 4 ); // Error

Stałe lub nie stałe elementy członkowskie funkcji, można wywoływać do obiektu, który nie jest stały.Można także przeciążyć elementy członkowskie funkcji za pomocą słowa kluczowego const; dzięki temu w innej wersji programu funkcja będzie wywoływana dla stałych i nie stałych obiektów.

Nie można zadeklarować konstruktorów i destruktorów ze słowem kluczowym const.

Słowo kluczowe const w C i C+ różnice

Przy deklarowaniu zmiennej, jako const w pliku kodu źródłowego C, wykonuje się następujące czynności:

const int i = 2;

Tej zmiennej można następnie użyć w innym module w następujący sposób:

extern const int i;

Ale aby uzyskać takie samo zachowanie w języku C++, należy zadeklarować zmienną const jako:

extern const int i = 2;

Jeśli chcesz zadeklarować zmienną extern w pliku kodu źródłowego języka C++ do użytku w pliku kodu źródłowego C, należy użyć:

extern "C" const int x=10;

Aby zapobiec przekręcaniu nazwy przez kompilator języka C++.

Zobacz też

Informacje

const (C++)

Stałe funkcje członkowskie