Итого, синглтон Маерса удобнее, т.к. содержит меньше ненужного кода, что есть добро.
С чего это меньше-то? Всё поровну:
C++ (Qt)
class Example
{
public:
static Example *instance();
private:
Example(){}
};
Example * Example::instance()
{
static Example *inst = new Example;
return inst;
}
int main(int argc, char *argv[])
{
Example::instance();
// ...
}
C++ (Qt)
class Example
{
public:
static Example *instance();
private:
Example(){}
static Example *inst;
};
Example *inst = new Example;
Example * Example::instance()
{
return inst;
}
int main(int argc, char *argv[])
{
// ...
}
Синглтон Маерса удобен, если могут возникать случаи, что синглтон и не нужен. Тогда instance() не вызовется и объект не создастся.
Классика же удобна, когда синглотон должен существовать обязательно, тогда порождение его содержится в самом классе и не нужно думать что бы ещё такое дописать в мейн.