次のようなクラスがあるとします
class Egg
{
static Egg e;
int i;
Egg(int ii):i(ii) {}
Egg(const Egg &); //Prevents copy-constructor to be called
public:
static Egg* instance() {return &e}
};
Egg Egg::e(47);
このコードは、オブジェクトを作成できないことを保証しますが、静的オブジェクトのみを使用できます。しかし、クラス内で同じクラスの静的オブジェクトを宣言するにはどうすればよいでしょうか。
また、e は静的オブジェクトであり、静的オブジェクトは静的メンバー関数のみを呼び出すことができるため、ここで静的オブジェクト e に対してコンストラクターを呼び出す方法があり、そのコンストラクターもプライベートであるため、もう 1 つ重要です。