Я наткнулся на код, в котором класс наследует одноэлементный класс. Класс Singleton имеет свой конструктор, деструктор как защищенный и конструктор копирования, = перегрузка оператора как частная. Этот класс Singleton использует ScopedLock для поддержки только 1 экземпляра. Производный класс имеет свой конструктор в Publi c, и этот конструктор инициализирует некоторые его закрытые члены. Мой вопрос заключается в том, какова цель наследования от класса Singleton, если у производного класса есть свой конструктор в Publi c и может быть создано несколько его объектов.
Поправьте меня, если я ошибся.
Код указан ниже:
class Singleton
{
private:
Singleton(Singleton const&);
Singleton& operator=(Singleton const&); protected: Singleton() { }
virtual ~Singleton() { }
static T* pInstance;
static Lock mLock;
public:
static T* GetInst()
{
ScopedLock<Lock> lock(mLock);
if (pInstance == 0) pInstance = new T;
return pInstance;
}
};
class Temp : public Singleton<Temp>
{
public: Temp();
virtual ~Temp();
};