次のようにC ++には、関係のこれらの3つのタイプがあります:
私たちは、最初に理解しなければなりません:静的メンバ関数は、具体的に呼び出す方法を、下記を参照してください、非静的データメンバを呼び出すことができます。
クラスA
{
公衆:
静的な無効楽しい(AとA)
{
COUT << B << ENDL;(错误)
COUT << AB << ENDL;(正确)
}
privte:
int型B;
}
静的メンバ関数が非静的データメンバをコールする場合は、上記の例のように、あなたはなぜ、オブジェクトの特定の呼び出しを使用しなければなりませんか?
理由:静的メンバ関数と非静的データメンバは、クラス全体のために所有されているのでそこにあるとして、オブジェクト固有のない特定の非静的メンバ関数とは異なり、それは、オブジェクトの目的ではない静的メンバ関数を呼び出すために私たちは、これは、アクセス非静的メンバに、このクラスの暗黙オブジェクトのようなものです知っています。だから、静的メンバ関数のパラメータは、特定の非静的データメンバのオブジェクトにアクセスする方法でなければなりません。
要約:
(1)静的メンバ関数は、直接クラスの静的データメンバと非静的メンバ関数を呼び出すが、方法によって渡されたオブジェクトパラメータを呼び出すために必要な場合、非静的データメンバを呼び出すことができます。
一般的に(2)、(1)も、この非静的データメンバを呼び出すことが推奨されていない、主な役割は、クラスのアクセス静的メンバ関数静的データメンバー、オブジェクト間のデータ共有の維持です。