スポンサードリンク
HOME > C++言語 > クラス機能 静的メンバ変数

C++言語 - クラス機能 静的メンバ変数

グローバルな領域(大域)に静的変数や静的関数を作る事はできましたが、

クラス内にも静的メンバ変数静的メンバ関数を作る事ができます。

キーワードは、グローバルな領域に作る時と同じようにstaticを付けます。

ここでは、静的メンバ変数の説明をしています。静的メンバ関数の説明はコチラです。



静的メンバ変数

クラスの中にstatic付きの変数を宣言すれば、静的メンバ変数となります。

この静的メンバ変数は、同じクラスの複数のインスタンスがあっても

1つしか存在しない変数です。

複数のインスタンスがある場合、静的メンバ変数は共有されます。

記述例

ファイル名:hito.h
class hito {
public:
int age;

static int sint;

};


ファイル名:hito.cpp
#include "hito.h"

int hito::sint = 0;


静的メンバ変数は、ヘッダファイル内にstatic付きで定義します。

この時は、初期化はできない事になっています。注意してください。

ヘッダファイルでの静的メンバ変数定義だけでは、実体は作られません。

実体を作るには、ソースファイル内で宣言する必要があります。

また、ソースファイル内での宣言時のみ、初期化する事ができます。

初期化しなくても問題はありません。

また、この時、キーワードstaticを付ける必要はありません。

と言うか、付けてはいけません。(コンパイルエラーが出ます。)

使用例

先程のヘッダファイル:hito.hとソースファイル:hito.cppが組み込まれている

モノとして説明します。

ファイル名:main.cpp
#include "hito.h"

void main() [
   hito a;
   hito b;

   a.sint = 10;
   b.sint = 20;
   hito::sint = 30;
}


この例では、クラスhitoの静的メンバ変数:sintに代入する例です。

3つの代入が行われていますが、全て同じ変数に代入している事になります。

クラスのメンバ変数なのだから、その静的メンバ変数が存在するクラスの

インスタンスを複数つくれば、

別々に複数個の静的メンバ変数が作られて、複数個使える。

と思うかもしれませんが、そうではありませんので注意して下さい。

クラスのインスタンスがある場合は、インスタンス名.静的メンバ変数名

アクセスできますが、

クラスのインスタンスがない場合でも、クラス名::静的メンバ変数名とすれば、

アクセスできます。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved