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