スコープ
C++ の名前はプログラムの特定の領域でのみ使用できます。この領域にわたるスコープの名前呼び出されます。スコープは静的な範囲のオブジェクトを表示しない名前に 「有効期間」を決定します。範囲はクラス コンストラクターとデストラクターが呼び出されるとスコープに対してローカルな変数を初期化すると名前の表示を決定します。(詳細についてはコンストラクター と デストラクター を参照してください)。5 種類のスコープがあります :
ブロック内で宣言された **ローカル スコープ **A の名前は宣言の位置の後で囲まれているブロックとブロック内でのみアクセスできます。関数本体を含むブロック内で宣言されたかのように関数の最も外側のブロックの範囲内の関数の仮引数の名前はローカル スコープを持ちます。次のコードがあるとします。
{ int i; }
i の宣言が中かっこで囲まれたブロック内にあるためコードの右中かっこ () の前にアクセス i ためローカル スコープを持ちはアクセスできません。
**関数スコープ ** のラベルが関数スコープを持つ唯一の名前です。機能すると関数内の任意の場所で使用できますがアクセスできない外部ではありません。
どの名前のすべてのブロックの外で宣言したクラスまたはクラスはファイル スコープを持ちます **ファイルのスコープ **。これは宣言の後に翻訳単位でアクセスできる任意です。静的オブジェクトを宣言していないファイル スコープの名前はグローバル名前と呼ばれます。
C++ ではファイルのスコープは名前空間スコープです。
クラス メンバーの クラス スコープ ** の名前クラス スコープがあります。クラス メンバー関数はメンバー選択演算子 (または)。** – > またはこのクラスのオブジェクトをオブジェクトまたはメンバーへのポインターの。* または – >* 演算子 () を使用してのみアクセスできます ; 非静的データ メンバーのクラスはそのクラスのオブジェクトに対して見なされます。次のクラス宣言を検討します :
class Point { int x; int y; };
クラス メンバー x と y はクラス Point のスコープ内にあると見なされます。
関数プロトタイプで宣言された **プロトタイプの範囲 ** の名前はプロトタイプの末尾までのみ表示されます。プロトタイプは次の 3 種類の名前 (strDestinationnumberOfElements と strSource) を宣言します ; これらの名前はプロトタイプの末尾にスコープの外側に出されます :
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );