この質問にはすでに答えがあります。
シングルトンはオブジェクトのインスタンスを1つだけ許可することを私は知っています。シングルトンで宣言された各メソッドは、このオブジェクトに対してのみ機能します。 同じ目的を達成するグローバルオブジェクトを単に宣言しないのはなぜだろうか。
私は確かに何かを忘れています。シングルトンが存在する場合、特定の用途があるか、特定のメカニズムを実現するのに役立つはずです。
例えば:
class Singleton
{
public:
static Singleton& Instance()
{
static Singleton sg;
return sg;
}
void function();
};
と同じになります。
class NotSingleton
{
public:
NotSingleon();
~NotSingleton()
void function();
};
NotSingleton nsg;
しかし、私が複数のインスタンスを使うことを妨げるものは何もありません。NotSingleton
シングルトンは、複数のオブジェクトを作成したくない場合に使用されます。シングルトンクラスは、複数のオブジェクトが作成されないようにします。しかし、グローバルオブジェクトを持つことでこれを保証することはできません。
Class Singleton{
public static Singleton object==null;
public void singleton(){
if(object==null)
object = new Singleton();
return object;
}
}
このクラスは複数のオブジェクトを作成しません。これがシングルトンクラスの目的です。