![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
![]()
Есть такой класс для управления соединением с БД:
Код:
Код:
Как можно возвращать ссылку, и в то же время не перезаписывать переменную? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]()
Статическая переменная будет инициализирована при первом вызове данной функции. Остальные вызовы никак её не поменяют. Плюс ко всему, такое создание синглтона будет потокобезопасно.
|
![]() |
![]() |
![]() |
#4 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
![]()
Несмотря на то, что во всех примерах синглтона возвращается указатель или ссылка на сам синглтон, я могу вернуть что угодно. Могу ли я возвращать хэндл БД при вызове connect и не будет ли это нарушением паттерна?
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]() Цитата:
мелочи-мелочи, а такие вещи, даже на java, в андроиде жуть че творят. Хотя казалось бы ... автоматом вся память - а нет - статик живет, пока живет ВМ, а вм живет - для ускорения запуска - и начинается свистопляска (а если вставите в дроид С++ код такой - то там ток ребут). Вообще я так делаю в хидере - тоже инит при первом использовании: Код:
Последний раз редактировалось alexzk; 19.06.2017 в 12:08. |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]()
Вот еще пример, хидер:
Код:
Где-то совсем потом: Код:
globalInstance<A>() |
![]() |
![]() |
![]() |
#7 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
![]()
Еще для использования RAII при работе с БД можно применять std::unique_ptr с пользовательским деструктором, а для удобного для чтения создания такого указателя можно написать шаблонную функцию. Но такой указатель не будет глобальным. Что лучше: указатель или синглтон?
|
![]() |
![]() |
![]() |
#8 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
![]()
Для чего используется inline? Темплейты по умолчанию и так inline.
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]()
У
Указатель, с кастомным удалятором. Но, кажется, unique_ptr не позволяет его задать. Тогда нужен класс-обвертка, который при удалении освободит ресурс. Напрямую хэндлы ресурса совать в указатель - очень плохая идея. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]()
По привычке. Остатки копипаста - сначало это был конкретный класс, а потом стал темплейтом.
Вобщем оно не мешает там. ...а стоп, по-моему как раз там inline нужен. Связано это с тем, как компилятор генерит статик мембер. Там комбинаций много inline + static +static static+static вобщем для уверенности, я прописал как мне нада. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Синглтон и паттерн. Что это такое и с чем его едят? (C#)) | max_prorok | Общие вопросы по программированию, компьютерный форум | 21 | 22.03.2016 14:59 |
Запрос с параметром | Claster | Помощь студентам | 0 | 11.06.2012 11:44 |
Синглтон. Исключение при вызове метода через глобальную точку доступа. | clions | C# (си шарп) | 3 | 13.04.2012 21:09 |
Цикл с параметром | Гузеля | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.03.2012 20:59 |
Синглтон | megachuhancer | Общие вопросы Delphi | 0 | 11.05.2010 13:23 |