まず、クラス内でstaticキーワードを使用すると、その変数や関数はクラス自体に関連付けられます。つまり、クラスのインスタンスを作成せずに直接アクセスできるようになります。
例えば、以下のようなクラスがあるとします。
class MyClass {
public:
static int staticVariable;
static void staticFunction();
};
上記のコードでは、staticVariable
とstaticFunction
はクラスMyClass
に属しています。インスタンスを作成せずに、以下のように直接アクセスできます。
int main() {
// static変数へのアクセス
MyClass::staticVariable = 10;
// static関数の呼び出し
MyClass::staticFunction();
return 0;
}
また、static変数はクラスのすべてのインスタンスで共有されるため、それぞれのインスタンスで同じ値を持ちます。一方、通常のクラス変数はインスタンスごとに独自の値を持ちます。
さらに、static関数はクラスのインスタンスを介さずに呼び出すことができるため、便利です。static関数内では、非static変数や関数には直接アクセスできませんが、static変数やstatic関数にはアクセスできます。
staticキーワードの活用例として、クラスのインスタンス数の追跡や、共有のユーティリティ関数の実装などがあります。また、static変数や関数はクラスの外部からもアクセス可能ですが、privateやprotectedなどのアクセス修飾子を使用することで制限することもできます。
以上が、C++におけるstaticキーワードの基本的な使い方と意味の解説です。この記事を参考にして、自分のプログラムでstaticキーワードを効果的に活用してみてください。