1

仮想関数を含むクラスをシングルトンにすることはできますか?

単に

class A:public B
{
   public:
   virtual fun();  //will be defined by this class (inherited from Class B)
}

このクラスをシングルトンにすることはできますか?

4

1 に答える 1

1

それが可能かどうか尋ねている場合は、もちろん、そのようなクラスからシングルトンを作成することは完全に可能です。

それが理にかなっているのかどうかを尋ねている場合、その質問に答えるのはより困難です。しかし主に、シングルトンは一般的に非常に論争の的となっているためです。そのため、シングルトンが本当に必要かどうかを自問することをお勧めします (たとえば、シングルトンは通常、テストをはるかに難しくします。テストでそれらを使用するクラスを取得するには、特別な「回避策」を導入する必要があります。基本的に、それらは非常に薄いベールに包まれたグローバル変数です)。 )。

また、意図したユースケースについても少し詳しく説明する必要があります。メソッド virtual を宣言するとき、基本的には、一部のサブクラスがその動作を変更したい可能性があると言います。基本クラスがシングルトンの場合、それは 1 つしか存在できないことを意味します。同じことをすべてのサブクラスに適用する必要がありますか? システムに存在するクラスから派生したクラスが 1 つだけ存在する必要がありますか? 次に、ファクトリを調べて、シングルトンと組み合わせて使用​​することをお勧めします (シングルトンが本当に必要であると判断した場合)。

于 2013-10-10T06:53:51.660 に答える