行 int Test::i;は何をしますか? 以下のプログラムで行います。誰か説明してください
// Assume that integers take 4 bytes.
#include<iostream>
using namespace std;
class Test
{
static int i;
int j;
};
int Test::i;
int main()
{
cout << sizeof(Test);
return 0;
}
行 int Test::i;は何をしますか? 以下のプログラムで行います。誰か説明してください
// Assume that integers take 4 bytes.
#include<iostream>
using namespace std;
class Test
{
static int i;
int j;
};
int Test::i;
int main()
{
cout << sizeof(Test);
return 0;
}
static
これは、クラスのメンバーを定義するための構文です。に初期化Test::i
し0
ます。
それに別の値を与えるには、次のことができます
int Tent::i = 42;
int Test::i;
デフォルトで初期化するi
クラスの静的メンバーを定義します。Test
0
static int i;
メンバーを宣言するだけで、i
定義はしません。定義を個別に配置する必要があります。
問題の行は、クラス Test の静的変数 i を定義 (インスタンス化) し、デフォルト値ゼロに初期化します。
このプログラムは、型クラス Test のオブジェクトのサイズを書き出します。これは、int "j" のバイト単位のサイズです。数はプラットフォームに依存します。32 ビット Windows プログラムは 4 を書き込みます。変数 "i" は、クラス Test のオブジェクトのメンバーではなく、"静的メンバー" であるため、この変数には入りません。クラス Test の名前空間を介してのみアクセスできます。