Latest web development tutorials

C ++ストレージクラス

ストレージクラスは、C ++プログラム変数/関数範囲(可視性)およびライフサイクルを定義します。 彼らはタイプを変更する前に、これらの指定子を配置します。 以下に記載されているストレージ・クラスC ++のプログラムが用意されています:

  • オート
  • 登録
  • 静的
  • extern
  • 変更可能な

自動ストレージクラス

自動ストレージ・クラスは、すべてのローカル変数のデフォルトのストレージクラスです。

{
   int mount;
   auto int month;
}

上記の例では、すなわち自動ローカル変数のみを変更し、自動関数内でのみ使用することができ、同じストレージクラスに2つの変数を定義します。

ストレージクラスを登録

登録ストレージクラスではなく、ローカル変数内のRAMのレジスタに格納されている定義するために使用されます。これは、変数の最大サイズは、レジスタ(通常はワード)の大きさに等しく、単項 '&'演算子(それは記憶場所を有していないため)、それに適用することができないことを意味します。

{
   register int  miles;
}

唯一のカウンタなどの変数への迅速なアクセスのための登録が必要です。 また、「レジスタ」の定義は、その変数がレジスタに格納されるわけではありません、それは変数は、ハードウェアおよび実装の制約に応じて、レジスタに格納されてもよいことを意味することに留意すべきです。

静的ストレージクラス

静的記憶域クラスはそれをあなたがスコープの外に出ると、作成および破棄するたびに入力する必要がなく、プログラムのライフサイクル内のローカル変数の存在を保持するようにコンパイラに指示します。したがって、静的なローカル変数の使用は、関数呼び出しの間に、ローカル変数の値を維持するように改変することができます。

static修飾子は、グローバル変数に適用することができます。 静的なグローバル変数を変更した場合、変数は、そのファイル内のステートメントの範囲を制限します。

C ++では、クラスの静的データメンバで使用する場合、すべてのオブジェクトは、メンバーが共有されているクラスの一つのコピーのみになります。

#include <iostream>
 
// 函数声明 
void func(void);
 
static int count = 10; /* 全局变量 */
 
int main()
{
    while(count--)
    {
       func();
    }
    return 0;
}
// 函数定义
void func( void )
{
    static int i = 5; // 局部静态变量
    i++;
    std::cout << "变量 i 为 " << i ;
    std::cout << " , 变量 count 为 " << count << std::endl;
}

上記のコードはコンパイルされ、実行されると、次の結果を生成します。

变量 i 为 6 , 变量 count 为 9
变量 i 为 7 , 变量 count 为 8
变量 i 为 8 , 变量 count 为 7
变量 i 为 9 , 变量 count 为 6
变量 i 为 10 , 变量 count 为 5
变量 i 为 11 , 变量 count 为 4
变量 i 为 12 , 变量 count 为 3
变量 i 为 13 , 变量 count 为 2
变量 i 为 14 , 变量 count 为 1
变量 i 为 15 , 变量 count 为 0

extern記憶クラス

extern記憶クラスは、グローバル変数への参照を提供するために使用され、すべてのプログラムファイルのグローバル変数が表示されます。あなたは変数を初期化することはできません」のextern」を使用すると、変数名は、以前に定義された保管場所を指します。

あなたが複数の文書を持っているし、他のドキュメントで使用できるグローバル変数や関数を定義するときは、変数や関数定義された参照を取得するために、他のファイル内でexternを使用することができます 。 externのは、別のファイル内のグローバル変数や関数を宣言するために使用され、理解することができます。

2以上のファイルがある場合はextern修飾子は、通常使用されている次のように、時間の同じグローバル変数や関数を共有します:

最初のファイル:main.cppに

#include <iostream>
 
int count ;
extern void write_extern();
 
int main()
{
   count = 5;
   write_extern();
}

第二のファイル:support.cpp

#include <iostream>
 
extern int count;
 
void write_extern(void)
{
   std::cout << "Count is " << count << std::endl;
}

ここで、第2のファイルにexternキーワード内のファイルmain.cppにで定義されている最初のカウントを宣言するために使用されます。 ここでは、次のように両方のファイルをコンパイルします。

$ g++ main.cpp support.cpp -o write

これは、以下の結果が生成され、実行可能プログラムが書き込みを実行しようと書き込み生成します。

$ ./write
Count is 5

可変ストレージクラス

可変指定子は説明するために、このチュートリアルの最後になりますオブジェクトクラスにのみ適用されます。これは、オブジェクトの代替定数のメンバーを可能にします。 すなわち、可変部材はconstメンバ関数によって変更することができるされています。