[ C++で開発 ]
クラスのメンバー変数についてのメモ
static修飾子を付与してメンバー変数を宣言します。
class Person { static int totalNumber = 0; public: Person(); ~Person(); : }; |
静的メンバー変数は、通常のメンバー変数とは違い、クラスで1つの記憶域を必要とします。この1つの記憶域は、プログラマが明示的に定義してあげる必要があります。
#include "Perseon.hh" int Person::totalNumber; |
static constな変数として定義すると、クラスのメンバー変数を定数として定義することができます。汎整数型や列挙型の場合は、クラス定義中に初期値(定数初期化子)を記述することができます。
class Alpha { public: static const int NUMBER = 1; static const char* const TEXT; : }; |
汎整数型であるint型の静的データメンバ NUMBER および 汎整数型であるchar型へのポインタ型の静的データメンバ TEXTを定義(宣言)しています。
const char* const Alpha::TEXT = "Alpha"; |
汎整数型ではない静的データメンバTEXTについては、クラス定義内で初期化子を記述できない仕様により、定義をクラス定義外部に記述します。初期値を定義できた整数型の場合も必要です。
C++では、ビットフィールドの型にsigned/unsignedを省略した場合、unsignedとして扱われるようです。コンパイラによってはオプションでどちらに倒すかを制御できるものもあります。