C++静的データ初期化まとめ
1578 ワード
静的データはグローバル変数と同様の共有特性を有するが,オブジェクト向け言語では,グローバル変数を使用するとプログラム設計における情報隠蔽の原則が破壊され,これはオブジェクト向けパッケージの特徴と矛盾する.同じクラスの複数のオブジェクト間のデータ共有を実現するために,C++は静的データメンバーの概念を提案した.1つのクラスでは、静的メンバーを実装する方法は、データ型定義時にstaticとして説明され、このメンバーを静的データメンバーと呼ぶ.通常のデータ・メンバーとは異なり、クラスのオブジェクトが複数作成されても、静的データ・メンバーのコピーは1つしかありません.これにより、同じクラスの異なるオブジェクト間のデータ共有が実現される.静的データ・メンバーの定義には特別な点はありませんが、初期化の方法は注意に値します.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
静的データ・メンバーの初期化は、クラス外で個別に行われ、オブジェクトを定義する前に行われます.一般的に、メイン関数mainの前に、クラス宣言後の特別な場所で定義と初期化が提供されます.上記の例では、データ型クラス名::静的データメンバー名=初期値;静的データ・メンバーは、通常のデータ・メンバーのようにオブジェクトに属していないクラス・オブジェクトの集合に属します.したがって、「クラス名::」を使用して静的データ・メンバーにアクセスできます.静的データ・メンバーは、静的変数と同様にコンパイル時に作成され、初期化されます.彼はクラスの任意のオブジェクトが確立される前に存在した.したがって、共有データ・メンバーは、オブジェクト定義の前にアクセスできます.もちろん、定義後もアクセスできます.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using
namespace
std;
class
A{
private
:
......
static
[type] variable1;
static
[type] variable2;
......
public
:
......
};
[type] A ::variable1=initial value1;
[type] A ::variable2=initial value2;
int
main()
{
......
}
静的データ・メンバーの初期化は、クラス外で個別に行われ、オブジェクトを定義する前に行われます.一般的に、メイン関数mainの前に、クラス宣言後の特別な場所で定義と初期化が提供されます.上記の例では、データ型クラス名::静的データメンバー名=初期値;静的データ・メンバーは、通常のデータ・メンバーのようにオブジェクトに属していないクラス・オブジェクトの集合に属します.したがって、「クラス名::」を使用して静的データ・メンバーにアクセスできます.静的データ・メンバーは、静的変数と同様にコンパイル時に作成され、初期化されます.彼はクラスの任意のオブジェクトが確立される前に存在した.したがって、共有データ・メンバーは、オブジェクト定義の前にアクセスできます.もちろん、定義後もアクセスできます.