Показать сообщение отдельно
Старый 01.10.2011, 00:20   #5
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: singleton vs static

//1 кусок кода
MyCl *m = MyCl::init();
m->someFuncA();
delete m;

//2 кусок кода
MyCl *m = MyCl::init();
m->someFuncB();
delete m;
зачем delete? суть синглтона - объект класса в единственном уникальном экземпляре будет доступным в разное время в разных участках кода. delete нужен только на выходе из программы уже.

Помойму второй пример удобней и понятней.
в твоём случае да.
а в таком нет:

статик:
class myClass
{
 static float a,b,c;
public:
 static void do();
};

float myClass::a = 0; // неявный момент назначения статик переменных (может вызваться в рандомной последовательности относительно инициализации данных других классов)
float myClass::b = 0;
float myClass::c = 0;

void myClass::do()
{
 a = b+c;
}
синглтон:

class myClass
{
 float a,b,c;
 static myClass* instance;
public:
 static myClass* Instance()
 {
  if (!instance) instance = new myClass();
  return instance;
 }
 static void Release()
 {
  if (instance) delete instance;
 }

 void do();

};

myClass* myClass::instance = 0; //единственная инициализация статик данных для синглтон класса. остальные нормальные будут сидеть внутри объекта класса

void myClass::do()
{
 a=b+c;
}
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (01.10.2011)