次の方法で共有


宣言

宣言は、プログラム内で使用する新しい名前を定義します。 このセクションには、宣言の次の使い方に関するトピックが含まれています。

  • オブジェクトまたは関数のストレージ クラス、およびリンケージを指定します。

  • inline または virtual として関数を宣言します。

  • const または volatile として宣言を修飾します。

  • 名前を定数に関連付けます (列挙宣言)。

  • 新しい (class、struct、または union 宣言) を宣言します。

  • 型 (型定義宣言) のシノニムを指定します。

  • 名前空間を指定します。

  • エイリアスにより、シノニムとして使用する型を宣言します。

新しい名前を定義することに加えて、宣言は、識別子がコンパイラによってどのように解釈されるかを指定します。 宣言は、識別子に関連付けられたストレージを自動的に予約しません。 定義によってストレージが予約されます。

注意

ほとんどの宣言は定義でもあります。定義ではない宣言には、メンバー リストなしのクラス宣言、および関数本体を持たない関数宣言などがあります。

宣言は次のいずれかです。

[ decl-specifiers ] [ declarator-list ] ;

function-definition

linkage-specification

template-specification

alias templates

explicit-template-instantiation

explicit-template-specialization

namespace-definition

namespace-alias-definition

alias-declaration

using-declaration

using-directive

asm-definition

宣言の decl-specifiers コンポーネントはオプションとして示されますが、クラス型または列挙型の宣言内でのみ省略できます。

declarator-list コンポーネント内の宣言子には、宣言されている名前が含まれます。 declarator-list はオプションとして表示されますが、省略できるのは関数宣言または関数定義だけです。

注意

関数の宣言は、一般に、プロトタイプと呼ばれます。プロトタイプは、引数や関数の戻り値の型に関する型情報を提供します。また、プロトタイプによりコンパイラは正しい変換を実行でき、タイプ セーフがサポートされます。

名前は宣言子の直後、ただし初期化子 (省略可能) よりも前の位置で宣言されるものと見なされます 詳細については、「Point of Declaration (宣言のポイント)」を参照してください。

宣言は、スコープ内で行われます。 スコープは、宣言された名前の可視性と定義されたオブジェクトの継続時間 (存在する場合) を制御します。 スコープ規則と宣言の使用方法の詳細については、「スコープ」を参照してください。

オブジェクト宣言は、「ストレージ クラス指定子」で説明する extern ストレージ クラス指定子が含まれていない限り定義でもあります。 関数宣言は、プロトタイプでない限り定義でもあります。 プロトタイプは定義する関数本体がない関数ヘッダーです。 オブジェクトの定義により、そのオブジェクトのストレージの割り当てと適切な初期化が行われます。

関連トピック

function-definition の詳細については、「C++ 関数定義」を参照してください。

linkage-specification の詳細については、「リンケージの仕様]を参照してください。

template-specification、explicit-template-instantiation、および explicit-template-specialization の詳細については、「テンプレート」を参照してください。

namespace-definition および namespace-alias-definition の詳細については、「名前空間 (C++)」を参照してください。

asm-definition の詳細については、「__asm」を参照してください。

参照

その他の技術情報

C++ 言語リファレンス