const
w C ++ nie oznacza, że wartość jest stałą.
const
w C ++ oznacza, że klient kontraktu zobowiązuje się nie zmieniać jego wartości.
To, czy wartość const
wyrażenia zmienia się, staje się bardziej widoczne, jeśli jesteś w środowisku, które obsługuje współbieżność opartą na wątkach.
Ponieważ Java została zaprojektowana od samego początku do obsługi współbieżności wątków i blokad, nie spowodowało to zamieszania poprzez przeciążenie terminu w celu uzyskania semantyki, która final
ma.
na przykład:
#include <iostream>
int main ()
{
volatile const int x = 42;
std::cout << x << std::endl;
*const_cast<int*>(&x) = 7;
std::cout << x << std::endl;
return 0;
}
wyjścia 42, a następnie 7.
Chociaż x
oznaczono jako const
, ponieważ tworzony jest alias inny niż const, x
nie jest stałą. Nie każdy kompilator wymaga volatile
tego zachowania (chociaż każdy kompilator może wstawić stałą)
W bardziej skomplikowanych systemach otrzymujesz aliasy const / non-const bez użycia const_cast
, więc nawyk myślenia, że const oznacza, że coś się nie zmieni, staje się coraz bardziej niebezpieczny. const
oznacza po prostu, że twój kod nie może go zmienić bez rzutowania, a nie, że wartość jest stała.
const
słów kluczowych, ale nie ma bazowy cecha. Odpowiednio poprawiono tytuł i tagi.