CとC++は同じ言語ではありません。特に、C
const
はC++const
とは関係ありません。
Cのconst
修飾子とC++のconst
修飾子の違いの1つは、そのデフォルトのリンケージです。
C++でconst
修飾子を使用して名前空間スコープで宣言されたオブジェクトには内部リンケージがありますが、Cではグローバルスコープで宣言されたconst
修飾子を使用したオブジェクト(static
の前にconst
修飾子を持たない)には外部リンケージがあります。
しかし、CとC++の言語間で他にどのように異なるのですか?両方の言語で、どちらも同じ種類の概念と目的を持っていると思いました。
私の質問:
「const」はCとC++でどのように異なるのですか? への回答は、Cの言語間の正確な違いを示していませんconst
修飾子のコンテキストでのC++。特定の言語で実行できないこと、またはそれで実行できることのみ。
From cppreference.com :
宣言されていない非ローカル非揮発性非テンプレート(C++ 14以降)非インライン(C++ 17以降)変数の宣言で使用される
const
修飾子extern
は内部リンクを提供します。 これは、const
ファイルスコープ変数に外部リンケージがあるCとは異なります。
それ以外はconst
はCとC++で同じセマンティクスを持ち、const
のCヘッダーは条件付き"extern C"
のC++ヘッダーとしてコンパイルされることがよくあります。