На нашем ресурсе вы можете полностью погрузиться в мир книги «Обратные вызовы в C++» — читайте её онлайн бесплатно в полной, несокращённой версии. Если предпочитаете слушать — воспользуйтесь аудиоформатом; хотите сохранить — скачайте через торрент в fb2. Жанр произведения — Знания и навыки, Компьютерная литература, Программирование. Также на странице доступно подробное описание, авторская аннотация, краткое содержание и живые отзывы читателей. Мы постоянно пополняем библиотеку и улучшаем сервис, чтобы создавать лучшее пространство для всех ценителей качественной литературы.
Обратные вызовы в C++

Дата выхода
04 января 2021
🔍 Загляните за кулисы "Обратные вызовы в C++" — аннотация, авторский взгляд и ключевые моменты
Перед погружением в полный текст предлагаем познакомиться с произведением поближе. Здесь собраны авторские заметки, аннотация и краткое содержание "Обратные вызовы в C++" — всё, что поможет понять глубину замысла и подготовиться к чтению. Материалы представлены в оригинальной авторской редакции (Виталий Евгеньевич Ткаченко) и сохраняют аутентичность произведения. Если чего-то не хватает — сообщите нам в комментариях, и мы дополним описание. Читайте мнения других участников сообщества: их отзывы часто раскрывают скрытые смыслы и добавляют новые грани понимания. А после прочтения обязательно вернитесь сюда — ваш отзыв станет ценным вкладом в общее обсуждение книги.
Описание книги
В практике разработки ПО зачастую встает задача динамической модификации программного кода в зависимости от текущих или настраиваемых значений параметров. Для решения этой задачи широко используются обратные вызовы. В языке C++ обратные вызовы реализуются различными способами, и далеко не всегда очевидно, какой из них лучший для конкретной ситуации. В книге рассмотрены теоретические и практические аспекты организации обратных вызовов, проанализированы достоинства и недостатки различных реализаций, выработаны рекомендации по выбору в зависимости от требований к проектируемому ПО. В первую очередь книга предназначена для программистов среднего (middle) уровня, т.е. тех, кто уже достаточно хорошо знает язык C++, но хотел бы расширить и углубить свои знания в области проектирования и дизайна. В определенной степени она также будет интересна опытным разработчикам, с одной стороны, как систематизация знаний, с другой стороны, как источник идей и методов для решения практических задач.
📚 Читайте "Обратные вызовы в C++" онлайн — полный текст книги доступен бесплатно
Перед вами — полная электронная версия книги "Обратные вызовы в C++", адаптированная для комфортного онлайн-чтения. Мы разбили произведение на страницы для удобной навигации, а умная система запоминает, на какой странице вы остановились — можно закрыть браузер и вернуться к чтению позже, не тратя время на поиски. Персонализируйте процесс: меняйте шрифты, размер текста и фон под свои предпочтения. Погружайтесь в мир литературы где угодно и когда угодно — любимые книги теперь всегда под рукой.
Текст книги
2.3.5. Синхронный вызов
Реализация инициатора для синхронного вызова представлена в Листинг 14. В отличие от асинхронного вызова, здесь аргументы не хранятся, а передаются как входные параметры функции.
Листинг 14. Инициатор для синхронного обратного вызова с указателем на метод-член класса
class Executor;
using ptr_method_callback_t = void(Executor::*)(int);
void run(Executor* ptrClientCallbackClass, ptr_method_callback_t ptrClientCallbackMethod)
{
int eventID = 0;
//Some actions
(ptrClientCallbackClass->*ptrClientCallbackMethod)(eventID);
}
2.
Преимущества и недостатки реализации обратных вызовов с помощью указателя на метод – член класса приведены в Табл. 4.
Табл. 4. Преимущества и недостатки реализации обратных вызовов с помощью указателя на метод-член класса
Гибкость. Управлять контекстом можно тремя способами, подобные возможности отсутствуют в других реализациях.
Отсутствие трансляции контекста.
Сложность. Код получается довольно громоздким и запутанным.
Тип класса должен объявляться в инициаторе. Здесь достаточно только предварительного объявления класса. Полное объявление класса в инициаторе делать необязательно и даже нежелательно, потому что логически это обработчик обратного вызова, то есть он относится к исполнителю и должен быть в нем реализован.
Инициатор должен хранить указатель на метод и указатель на класс. Увеличивается расход памяти.
2.4. Функциональный объект
2.4.1. Концепция
С точки зрения C++ функциональный объект – это класс, который имеет перегруженный оператор вызова функции[7 - Другое название, которое встречается в литературе, – функтор.
Графическое изображение обратного вызова с помощью функционального объекта представлено на Рис. 14. Исполнитель реализуется в виде класса, код упаковывается в перегруженный оператор вызовы функции, в качестве контекста выступает экземпляр класса. При настройке экземпляр класса как аргумент сохраняется в инициаторе[8 - В инициаторе хранится копия экземпляра класса. Не ссылка, не указатель, а именно копия.





