|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.12.2014, 03:42 | #1 |
Пользователь
Регистрация: 03.10.2012
Сообщений: 33
|
Синглетон
Столкнулся впервые с таким. Нужна помощь по объяснению почему и как и для чего так устроено.
MyClass.h Код:
Код:
И чем отличается, к примеру, MyClass *myClass от MyClass* myClass а также MyClass &myClass от MyClass& myClass? Последний раз редактировалось Stilet; 16.12.2014 в 07:48. |
16.12.2014, 07:25 | #2 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
MyClass *myClass MyClass* myClass MyClass * myClass Такие записи допустимы. Отличие только в стиле оформления. Да и код нужно обрамлять тегами [CODE], а не [QUOTE] тогда он смеяться перестанет. Код:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
16.12.2014, 08:03 | #3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Разницы в записях никакой нет, но "правильнее" писать MyClass *myClass и MyClass &myClass, ибо меньше вероятность допустить такую ошибку: MyClass* a, b, c (угадайте сколько тут объявляется указателей, а сколько объектов).
static методы - это методы, которые работают в рамках класса, а не объекта. NULL - это нулевой указатель, используется для обозначения того, что указатель указывает вникуда и за ним нет никаких данных. Код:
Чтобы понять что происходит в коде, почитайте уже про паттерн синглтон. в destroyMyClass лишняя первая строка. |
16.12.2014, 17:50 | #4 |
Пользователь
Регистрация: 03.10.2012
Сообщений: 33
|
Спасибо за ответ! Теперь меньше пробелов. Буду очень признателен если поясните принцип работы синглтона. Понимаю, что можно найти и почитать, но мне понятнее когда человек объясняет на своих словах.
|
16.12.2014, 17:53 | #5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
А, что такое синглитон?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
16.12.2014, 17:53 | #6 |
Пользователь
Регистрация: 03.10.2012
Сообщений: 33
|
Еще где-то видел, что он хорошо подходит в плане менеджера.
Ну, это класс с одним единственным объектом. Вот только не пойму суть как он работает. В чем и прошу помощи. Последний раз редактировалось Stilet; 17.12.2014 в 07:38. |
16.12.2014, 18:33 | #7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Мода на синглтоны была недолгой. Развитие многопоточных приложений и всяких юнит тестов свело на нет пользу использования синглтонов. Некоторые считают, что его из паттернов нужно перенести в антипаттерны.
По сути это аналог глобальной переменной. Если есть что-то, что неизвестно кто должен создавать, а нужно это чуть более, чем везде, то синглтон в руки. Да, менеджер чего-то там напрашивается первым делом. В простейшем случае, как здесь, работает синглтон как "ленивая" инициализация. Пока никому объект не нужен, он и не создаётся. Как только кто-то его запросил через соответствующий метод, объект создаётся и возвращается ссылка/указатель на него. Если кто-то запросил объект, а он уже создан, то второй экземпляр не создаётся, а возвращается уже имеющийся объект. Есть всякие разные вариации, основная суть в том, что у класса есть один объект и не нужно ломать голову как его передавать по разным функциям, как создавать, удалять,... эдакая вещь для лентяев |
16.12.2014, 18:53 | #8 |
Пользователь
Регистрация: 03.10.2012
Сообщений: 33
|
Ясно. Надо поработать с ним на практике, чтобы запомнить.
И все-же осталась еще одна неясная вещь ) Код:
Код:
Все спасибо! Ко мне снизошло понимание! ) Последний раз редактировалось Stilet; 17.12.2014 в 07:39. |
16.12.2014, 19:05 | #9 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Метод getMyClass возвращает ссылку на объект класса MyClass.
|
16.12.2014, 19:14 | #10 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|