包含虚函数的类可以成为单例

Can a class containing virtual function made singleton?

本文关键字:单例 函数 包含虚      更新时间:2023-10-16

一个包含虚函数的类可以成为单例吗?

只是

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

我可以使这个类成为单例吗?

如果你问这是否可能,那么是的,当然,完全有可能从这样的类中创建单例。

如果你问它是否有意义,那么这个问题就更难回答了;但主要是因为单例通常是一个非常有争议的模式。所以你可能想问问自己你是否真的需要一个单例(例如,单例通常会使测试变得更加困难,你必须引入特殊的"解决方法"来让类在测试中使用它们;基本上,它们是非常薄的全局变量(。

还必须详细说明预期的用例:当您声明方法虚拟时,您基本上会说某个子类可能想要更改该行为。如果基类是单例,则意味着只能有一个基类。这是否必须适用于所有子类?您的系统中是否应该只有一个从该类派生的类?然后,您最好看看工厂,并可能将它们与Singleton结合使用(同样,如果您决定确实需要Singleton(。