2017年11月10日
《その114》 静的データメンバ・静的メンバ関数
静的データメンバ・静的メンバ関数
静的データメンバ・静的メンバ関数については、本ブログの《その105》〜《その107》でもチェックしましたが、少し補足しておきます。
特定のオブジェクトではなく、そのクラスに共通するデータや手続きは 静的データメンバ・静的メンバ関数として実現するのが原則です。
下記のクラス C の ※1. 〜 ※4. の箇所について確認します。
class C {
int a;
int b;
static int c[]; // ※1. 静的データメンバ
const static int d = 3; // ※2. 静的メンバ関数
static int func1(int x, int y); // ※3. 静的メンバ関数
public:
static int func2(int x) { ・・・ } // ※4. 静的メンバ関数
C();
C(int aa, int bb);
int func3(int x) const;
・・・
};
※1. static付きで宣言された c[] は静的データメンバです。
静的データメンバの実体の定義は、クラス定義の外で
int C::c[] = {100, 120, 140};
のように、static を付けずに行います。
※2. 静的データメンバであっても、d のように const付き整数型(汎整数型)の場合には、
クラス定義中で初期化子を与えて定義することが許されます。
※3. static付きで宣言された func1 は静的メンバ関数です。
静的メンバ関数の定義は、静的データメンバの場合とは異なり、
クラス定義の 内・外 どちらでも行えます。
クラス定義の外で行う場合は、
int C::func1(int x, int y) { ・・・ }
のように、static を付けずに行います。
※4. 公開属性の静的メンバ関数 func2 をクラスの外から呼び出すには、
C::finc2(7);
のように記述します。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6953315
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック