C++でstaticキーワードの用途は何ですか。
C++において、staticキーワードには次のような用途があります。
- スタティックメンバ変数とは、staticキーワードで宣言されたメンバ変数のことであり、クラスに属し、オブジェクトではなくクラス全体で同じ値を共有する変数です。スタティックメンバ変数はクラスのインスタンス間でデータを共有することができ、クラスの外部で初期化することもでき、クラスの内部で初期化することもできます。
class MyClass {
public:
static int count;
};
int MyClass::count = 0;
int main() {
MyClass obj1;
MyClass obj2;
obj1.count = 5;
obj2.count = 10;
std::cout << obj1.count << std::endl; // 输出10
std::cout << obj2.count << std::endl; // 输出10
return 0;
}
- 静的メンバー関数:staticキーワードで宣言されたメンバー関数は静的メンバー関数と呼ばれます。静的メンバー関数は特定のインスタンスではなく、クラスのオブジェクト上で呼び出されます。静的メンバー関数は非静的メンバー変数にアクセスすることはできませんが、静的メンバー変数にはアクセスできます。
class MyClass {
public:
static void print() {
std::cout << "Hello, World!" << std::endl;
}
};
int main() {
MyClass::print(); // 输出Hello, World!
return 0;
}
- 関数の内部でstaticキーワードを使用して宣言された変数は、静的局所変数と呼ばれます。この変数は関数が最初に呼び出された時に初期化され、関数の呼び出しが終了してもその値を保持し続け、プログラムが終了するまで変わりません。静的局所変数の有効範囲は、その変数を宣言した関数に限定されます。
void foo() {
static int count = 0;
count++;
std::cout << count << std::endl;
}
int main() {
foo(); // 输出1
foo(); // 输出2
foo(); // 输出3
return 0;
}
- 静的なキーワードは、関数や変数の可視性を変更するためにも使用できます。関数や変数の前にstaticキーワードを追加すると、それらの可視性を現在のファイル内に制限し、他のファイル内の同じ名前の関数や変数との衝突を避けることができます。このような使い方は、通常、ヘッダーファイル内の関数や変数の前に使用され、再定義エラーを防ぐために役立ちます。