const
en C++ ne signifie pas qu'une valeur est une constante.
const
en C++ implique que le client d'un contrat s'engage à ne pas en altérer la valeur.
Si la valeur d'un const
Les changements d'expression deviennent plus évidents si vous êtes dans un environnement qui supporte la concurrence basée sur les threads.
Java ayant été conçu dès le départ pour prendre en charge la concurrence entre les threads et les verrous, il n'a pas ajouté à la confusion en surchargeant le terme pour qu'il ait la sémantique que l'on connaît aujourd'hui. final
a.
eg :
#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;
}
sorties 42 puis 7.
Bien que x
marqué comme const
car un alias non-constant est créé, x
n'est pas une constante. Tous les compilateurs n'exigent pas volatile
pour ce comportement (bien que chaque compilateur soit autorisé à mettre la constante en ligne).
Avec des systèmes plus compliqués, vous obtenez des alias const/non-const sans l'utilisation de const_cast
Il est donc de plus en plus dangereux de prendre l'habitude de penser que la constance signifie que quelque chose ne changera pas. const
signifie simplement que votre code ne peut pas la modifier sans un cast, et non que la valeur est constante.
2 votes
Il y a est a
const
mais il n'y a pas de caractéristique sous-jacente. J'ai corrigé votre titre et vos balises en conséquence.