[C++]静的メンバー(静的)


静的メンバー


静的メンバーとは、クラスに属しているがオブジェクトによって割り当てられていない、クラス内のすべてのオブジェクトによって共有されるメンバーです.分かりきったように話す.次の例です.
class A
{
public:
	A() = default;
	virtual ~A() = default;

	bool func1();	// 멤버 함수 선언
	static bool func2(); // 정적 멤버 함수 선언
};

int main()
{
	A a;	// 객체를 만듦
	a.func1();	// 멤버함수 호출. `객체이름.멤버함수` 형식

	A::func2();	// 정적멤버함수 호출. `클래스이름::멤버함수이름`gudtlr

	return 0;
}
メンバー関数はオブジェクトを作成してメンバー関数を呼び出すことしかできませんが、静的メンバー関数はオブジェクトを作成する必要はなく、クラス名のみを呼び出すことができます.もう一度よく調べてみます.

静的メンバー変数


メンバー変数が静的(static)と宣言されると、クラス内のすべてのオブジェクトは1つのデータのみを維持します.宣言はクラス領域で実行され、定義はファイル領域で実行されます.外部接続(外部接続)があり、複数のファイルからアクセスできます.例は次のとおりです.
class Person

{

private:

    string name_;

    int age_;

public:

    static int person_count_;            // 정적 멤버 변수의 선언

    Person(const string& name, int age); // 생성자

    ~Person() { person_count_--; }       // 소멸자

    void ShowPersonInfo();

};  

...

int Person::person_count_ = 0; // 정적 멤버 변수의 정의 및 초기화

静的メンバー関数


静的メンバー関数は、クラスのオブジェクトを作成せずにクラス名のみを呼び出すことができます.
静的メンバー関数には、次の特徴があります.
1.オブジェクトを作成する必要がなく、クラス名だけで呼び出すことができます.
2.オブジェクトは作成されないため、このポインタはありません.
3.特定のオブジェクトとマージしないで、静的メンバー変数のみを使用できます.
例は次のとおりです.
class Person

{

private:

    string name_;

    int age_;

public:

    static int person_count_;            // 정적 멤버 변수의 선언

    static int person_count();           // 정적 멤버 함수의 선언

    Person(const string& name, int age); // 생성자

    ~Person() { person_count_--; }       // 소멸자

    void ShowPersonInfo();

};

...

int Person::person_count_ = 0; // 정적 멤버 변수의 정의 및 초기화

...

int Person::person_count()     // 정적 멤버 함수의 정의

{

    return person_count_;

}
ソース