web-dev-qa-db-fra.com

Quelle est la différence entre le qualificatif const en C et le qualificatif const en C ++?

J'ai trouvé un commentaire de l'utilisateur R .. :

C et C++ ne sont pas le même langage. En particulier, C const n'a rien à voir avec C++ const.

Je sais qu'une différence entre le qualificatif const en C et le qualificatif const en C++ est sa liaison par défaut.

Un objet déclaré à la portée de l'espace de noms avec le qualificatif const en C++ a une liaison interne, tandis qu'en C un objet avec le qualificatif const déclaré à la portée globale (sans avoir de qualificatif static avant const) a un lien externe.

Mais comment diffèrent-ils tous les deux entre les langages C et C++? J'ai pensé que les deux avaient le même genre de concept et de but dans les deux langues.

Ma question:

  • Quelle est la différence entre le qualificatif const en C et le qualificatif const en C++?

Les réponses à En quoi "const" diffère-t-il en C et C++? ne pointent pas une différence exacte entre les langages de C et C++ dans le contexte du qualificatif const. Seulement ce que vous ne pouvez pas faire ou ne pouvez pas en faire dans une certaine langue.

De cppreference.com :

Le qualificatif const utilisé sur une déclaration d'une variable non-inline non-locale non volatile non-template (depuis C++ 14) non-inline (depuis C++ 17) qui n'est pas déclarée extern lui donne un lien interne. Ceci est différent de C où les variables de portée de fichier const ont un lien externe.

Autre que cela, const a la même sémantique en C et C++ et les en-têtes C avec const sont souvent compilés comme en-têtes C++ avec "extern C".

0
Maxim Egorushkin