静的メンバー関数
静的メンバー関数はクラス スコープであると見なされます。非静的メンバー関数とは対照的にこれらの関数に this の暗黙の引数はありません ; したがって静的データ メンバー列挙子は入れ子にされた型だけを直接使用できます。静的メンバー関数は対応するクラス型のオブジェクトを使用せずにアクセスできます。次の例について考えます。
使用例
// static_member_functions.cpp
#include <stdio.h>
class StaticTest
{
private:
static int x;
public:
static int count()
{
return x;
}
};
int StaticTest::x = 9;
int main()
{
printf_s("%d\n", StaticTest::count());
}
コメント
このコードではクラス StaticTest が静的メンバー関数 count が含まれています。この関数の戻り値を StaticTest の型指定されたオブジェクトとプライベート クラスのメンバーの値が関連付けられません。
静的メンバー関数は外部リンケージがあります。これらの関数に このポインター はありません。したがって次の制限がこのような関数に適用されます :
これらはメンバー選択演算子を使用して静的クラス メンバーのデータにアクセスできません (。 または – >)。
これらは 仮想 として宣言することはできません。
これらは同じ引数の型が静的関数と同じ名前を付けることはできません。
[!メモ]
メンバー選択演算子の左側 。 (または) – > 静的メンバー関数を選択する評価されません。これは関数が副作用のために使用されている重要です。たとえば式 SideEffects().CountOf() は SideEffects 関数を呼び出していません。