C++のstaticの役割は何ですか
C++のstaticキーワードの主な用途は次のとおりです。
- 静的(static)変数は、関数内で宣言された変数で、プログラム実行時における最初の初期化時に一度だけ値が代入され、関数が終了してもその値は保持され、次にその関数を呼び出したときも前の値を引き継いで使われます。
void func() {
static int count = 0; // 静态变量
count++;
cout << count << endl;
}
int main() {
func(); // 输出 1
func(); // 输出 2
return 0;
}
- 静的関数:静的関数はクラスのメンバ関数であり、クラスの静的メンバ変数や他の静的関数にはアクセスできますが、非静的メンバ変数や非静的関数にはアクセスできません。静的関数はオブジェクトを作成することなく、クラス名で直接呼び出すことができます。
class MyClass {
public:
static void staticFunc() { // 静态函数
staticVar = 10; // 可以访问静态成员变量
//nonStaticVar = 20; // 无法访问非静态成员变量
}
static int staticVar; // 静态成员变量
private:
int nonStaticVar; // 非静态成员变量
};
int MyClass::staticVar = 0; // 初始化静态成员变量
int main() {
MyClass::staticFunc(); // 调用静态函数
cout << MyClass::staticVar << endl; // 输出 10
return 0;
}
- 静的メンバ変数とはクラスのメンバ変数で、プログラム実行時に1回だけ初期化され、クラスのすべてのオブジェクト間で共有される変数のことです。この変数には、クラス名またはオブジェクト名でアクセスできます。
class MyClass {
public:
static int staticVar; // 静态成员变量
};
int MyClass::staticVar = 0; // 初始化静态成员变量
int main() {
MyClass obj1;
MyClass obj2;
obj1.staticVar = 10; // 通过对象访问静态成员变量
cout << obj2.staticVar << endl; // 输出 10
cout << MyClass::staticVar << endl; // 输出 10
return 0;
}
総じて、staticキーワードは静的変数、静的関数、静的メンバー変数の作成に使用できます。静的変数は、関数内で一度だけ初期化され、その値を保持します。静的関数は、静的メンバー変数と他の静的関数のみをアクセスでき、オブジェクトの作成には依存しません。静的メンバー変数は、クラスのすべてのオブジェクト間で共有されます。