-
- Есть скрытый смысл. Порядок исполнения и перекрытие конструкторов. Такая инициализация происходит перед вызовом чего либо. - framer(27.11.2016 09:30, ссылка)
- Делать чего-либо в конструкторе -- за это сжигать нужно: потом такой класс унаследуют, будут пытаться применять, а если действия предпринятые в конструкторе вызывают коллбэки (через виртуальную функцию абстрактного базового класса), то выяснишь, fk0(288 знак., 27.11.2016 13:08)
- Да и это верно. Но нет идеального решения для всего. При таком подходе потом оказывается, что за каждой поднятой инстанцией объекта надо еще кучу функций вызывать и получаются копи-пасты. А виртуальные функции в конструкторе это криминал. - framer(27.11.2016 16:58)
- Вспоминается класс критической секции из scmRTOS, где всю работу делают конструктор и деструктор - AlexG(27.11.2016 16:18)
- А что, в конструкторе народ вызывает функции? Конструктор же должен свой класс инициализировать: приваты там, указатели... - Звероящер(27.11.2016 15:17)
- В конструкторе, например, у сетевой файловой системы запрашивают файл и дают коллбэк (свой this) который вызвать когда файл скачается. Если скачивается очень быстро -- приехали. - fk0(27.11.2016 17:00)
- Файл скачивается быстрее, чем класс инициализируется? - Звероящер(28.11.2016 06:13)
- Долой коллбэки. Применять чисто виртуальные классы в качестве интерфейсов или систему сигнал/слот. Такой подход сразу поставит все на свои места. Тут либо плюсы снять либо, что-то надеть. - framer(27.11.2016 17:16)
- Вызов виртуальной функции я и называю коллбэком. Альтернатива -- очереди сообщений и т.п. - fk0(28.11.2016 01:27)
- Никогда не понимал коллбэков. Тупо перенос буферизации в юзерспейс и не более. Это что-же такое, в прикладной программе, должно быть, ни о чего другого не зависящее, что можно полностью в каллбэке сделать?! - Скрипач(27.11.2016 17:23)
- Я коллбэки использую в основном когда всякие менюшки рисую. А так почти никогда. - Звероящер(28.11.2016 06:12)
- да бывает, создать мьютекс/семафор/задачу. Да и хоть банальный отладочный вывод в лог - megajohn(27.11.2016 16:05)
- В конструкторе, например, у сетевой файловой системы запрашивают файл и дают коллбэк (свой this) который вызвать когда файл скачается. Если скачивается очень быстро -- приехали. - fk0(27.11.2016 17:00)
- Делать чего-либо в конструкторе -- за это сжигать нужно: потом такой класс унаследуют, будут пытаться применять, а если действия предпринятые в конструкторе вызывают коллбэки (через виртуальную функцию абстрактного базового класса), то выяснишь, fk0(288 знак., 27.11.2016 13:08)
- а что вы называете стандартной инициализацией? - AlexG(26.11.2016 19:54)
- В скобках и как ниже Ксения указала. - Звероящер(27.11.2016 07:59)
- Здесь особого смысла не вижу, но в общем он есть. Например, я точно так же поступаю, если хочется назвать переменные точно так же, как входные параметры. Ксения(79 знак., 26.11.2016 16:29)
- Можно переменные класса начинать с подчёркивания, или заканчивать подчёркиванием, или начинатьс m_... fk0(73 знак., 27.11.2016 13:05)
- Есть скрытый смысл. Порядок исполнения и перекрытие конструкторов. Такая инициализация происходит перед вызовом чего либо. - framer(27.11.2016 09:30, ссылка)