包含虚函数的类是否可以构成单例?
简单地
class A:public B
{
public:
virtual fun(); //will be defined by this class (inherited from Class B)
}
我可以让这个班级单身吗?
答案 0 :(得分:1)
如果你问是否可能,那么是的,当然,完全有可能从这样一个类中创建一个单例。
如果你问这是否有意义,那么这个问题就更难回答了;但主要是因为一般的单身人士是一个非常有争议的模式。所以你可能想问问自己,你是否真的需要一个单身人士(单身人士通常会更加努力地进行测试,你必须引入特殊的“变通办法”才能让他们在测试中使用它们;基本上,他们是非常薄弱的全局变量)。
您还需要详细说明预期的用例:当您声明一个方法虚拟时,您基本上会说某些子类可能想要更改该行为。如果基类是单例,则意味着只能有一个基类。同样必须适用于所有子类吗?是否只有一个类派生自系统中存在的类?然后你最好看看工厂,并可能将它们与Singleton一起使用(再次,如果你决定真的需要 Singleton)。