![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Ну вообщем, я не собираюсь тратить время и доказывать свою точку зрения людям, которые принципиально не хотят "слазить с насиженного". Всем удачи
![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
с глобальными переменными (и синглтонами) есть еще одни грабли... (наступал лично
![]() пусть есть глобальная переменная для записи данных в лог - CLogger Log; и есть еще одна глобальная переменная, нужная для того что-бы что- то проинициализировать...
я как-то раз по наивности добавил в конструктор этого объекта вывод в лог
последствия были плачевны, так-как переменная Log еще не была создана во время создания переменной wsock_inst... да нет никакого табу... ![]() |
||||
|
|||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Это наверно косяк проектирования, т.е. надо в нужной последовательности все инициализировать, где нить сразу после main или в конструкторе класса главного окна ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
SABROG, вся прелесть глобальных объектов в том, что неизвестно в какой последовательности они инициализируются.
Синглтоны призваны решить эту проблему. Подобные классы нужно инициализировать не глобально (у них же есть статический метод, доступный отовсюду), а в main() например, и в требуемой последовательности. Это позволяет вообще отказаться от глобальных переменных. |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
зачем в последовательности? вся прелесть синглтона в том, что вообще о последовательности думать не нужно. "вызываешь" переменные через функции, и все. Что еще не инициализированно на тот момент и тебуется, само проинициализируется... |
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Ну значит у Lazina синглтон не правильно построен, насколько я помню там вызов всех методов таким образом происходит:
Где Instance() как раз инициализирует новый экземпляр класса и возвращает указатель, либо использует старый, если инициализация уже где-то была. |
||||
|
|||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
засчет чего? Earnest тут права, суть одна и та же
с функциями доступа в любой ситуации без - аналогичны глобальным переменным -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
у меня там только глобальные переменные, никаких синглтонов)) если-бы log был синглтоном то да, такой проблемы-бы не возникло... |
|||
|
||||
Alek86 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
в смысле, если в классе Globals приватный статик, который имеет функцию доступа, то он хуже глобальной переменной? Добавлено @ 12:24 где траву берешь? ;) Добавлено @ 12:26 ты же говорил
![]() чето я не врублюсь - наверна выспаться нужно Это сообщение отредактировал(а) Alek86 - 17.3.2008, 12:27 |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
давай определимся, что значит хуже я говорю с позиции производительности Могилевская 5/1/50 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
а я говорю с позиции нормального компилятора, который мелкие функции (делегирование и т.п.) инлайнит если кто-то использует допотопный компилер (и он не догадается при этом поставить inline), то у него будет 0,1% уменьшение поизводительности, но, поскольку их щас почти никто не использует... хотя, если юзать синглтон, то небольшое падение производительности будет но альтернатива - ипаться с временем жизни - имхо, хуже Это сообщение отредактировал(а) Alek86 - 17.3.2008, 12:44 |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
засчет не замещения глобальной статик члена - переменной, локальной и подавление проблем связанных с этим |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
А как удалять этот класс? ты об этом подумал? Или ты его не удаляешь? |
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
А для чего удалять синглтон ? Насколько я понимаю смысл в том, чтобы он "оживал" в момент старта программы и "помирал" при выходе. А там уже сама ОС его зарубит. Я правда не знаю вызовется ли деструктор в этом случае, не работал с синглтонами, паттерны проектирования для меня пока темный лес, как и вообще тема классов в целом. |
||||
|
|||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
если-бы я в своем примере написал
то не факт что работало-бы, даже если-бы Log был реализован как синглтон Добавлено через 2 минуты и 3 секунды
кажется мы об одном и том-же))) вызывается, и если деструктор использует другой глобальный объект, то тут опять грабли)), почитать об этом можно у Александресску... |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |