web-dev-qa-db-ja.com

Cのconst修飾子とC ++のconst修飾子の違いは何ですか?

私は コメント ユーザー R .. を見つけました:

CとC++は同じ言語ではありません。特に、C constはC++ constとは関係ありません。

Cのconst修飾子とC++のconst修飾子の違いの1つは、そのデフォルトのリンケージです。

C++でconst修飾子を使用して名前空間スコープで宣言されたオブジェクトには内部リンケージがありますが、Cではグローバルスコープで宣言されたconst修飾子を使用したオブジェクト(staticの前にconst修飾子を持たない)には外部リンケージがあります。

しかし、CとC++の言語間で他にどのように異なるのですか?両方の言語で、どちらも同じ種類の概念と目的を持っていると思いました。

私の質問:

  • Cのconst修飾子とC++のconst修飾子の違いは何ですか?

「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++ヘッダーとしてコンパイルされることがよくあります。

0