ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
933305 Топик полностью
fk0, легенда (12.07.2019 12:03, просмотров: 298) ответил SciFi на Хоть убейте, не пойму, что тут плюсы улучшат по сравнению с тёплым ламповым цэ. Колбек подцепить - дело нехитрое. Или хочется, чтобы обязательно было this?
А если экземпляров того, с чем коллбэк работает, несколько и оно не может быть static, то как коллбэк узнает с какими данными работать? Уже void * тащи. Тот же this. Только последний позволяет не писать оператор "->" строчке и работать как бы с обычными переменными (синтакс сахар) и самое главное позволяет через один коллбэк протащить десяток функций, а не делать таблицу виртуальных функци руками (через 10 разных коллбэков, через энум с функциями и switch-case или выбор по таблице). И коллбэк -- он в рантайме работает. Часто половину всего можно вытащить в компайл-тайм (через стирание типа и захват его функций) и получить, на уровне ассемблера, код в котором всё вообще напрямую вызывается и очень эффективно. Но в лоб такой код писать не будешь, с ним потом работать потом невозможно. Нужна система метапрограммирования. В принципе оно и на голом C местами вполне возможно, делал. С помощью макросов, const и какой-то матери. Но в C++ понятие константных выражений введено в явном виде.
[ZX]