Библиотека knigago >> Компьютеры: Языки и системы программирования >> C, C++, C# >> Обратные вызовы в C++


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1062, книга: В Речи Посполитой
автор: Илья Исаевич Левит

Книга "В Речи Посполитой" Ильи Левита - это захватывающее исследование истории и культуры многоконфессионального и многоэтнического государства, существовавшего на территории современной Польши, Литвы, Беларуси и Украины с конца XVI века до конца XVIII века. Левит мастерски сплетает повествование из архивных документов, исторических трудов и личных свидетельств, создавая яркую картину жизни в Речи Посполитой. Он исследует политическую систему с выборным монархом и сложным сеймом,...

Виталий Евгеньевич Ткаченко - Обратные вызовы в C++

Обратные вызовы в C++
Книга - Обратные вызовы в C++.  Виталий Евгеньевич Ткаченко  - прочитать полностью в библиотеке КнигаГо
Название:
Обратные вызовы в C++
Виталий Евгеньевич Ткаченко

Жанр:

Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, C, C++, C#

Изадано в серии:

неизвестно

Издательство:

SelfPub

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Обратные вызовы в C++"

В практике разработки ПО зачастую встает задача динамической модификации программного кода в зависимости от текущих или настраиваемых значений параметров. Для решения этой задачи широко используются обратные вызовы. В языке C++ обратные вызовы реализуются различными способами, и далеко не всегда очевидно, какой из них лучший для конкретной ситуации. В книге рассмотрены теоретические и практические аспекты организации обратных вызовов, проанализированы достоинства и недостатки различных реализаций, выработаны рекомендации по выбору в зависимости от требований к проектируемому ПО. В первую очередь книга предназначена для программистов среднего (middle) уровня, т.е. тех, кто уже достаточно хорошо знает язык C++, но хотел бы расширить и углубить свои знания в области проектирования и дизайна. В определенной степени она также будет интересна опытным разработчикам, с одной стороны, как систематизация знаний, с другой стороны, как источник идей и методов для решения практических задач.
К этой книге применимы такие ключевые слова (теги) как: Самиздат,языки программирования,разработка программного обеспечения

Читаем онлайн "Обратные вызовы в C++". [Страница - 63]

идентичны указателям на обычные функции. Профилирование выполнялось в среде Microsoft Visual Stidio.

(обратно)

27

Если читатель попробует повторить эксперимент, то числовые значения, скорее всего, будут другими. Во-первых, они сильно зависят от используемого компилятора, точности профилировщика, производительности процессора. Во-вторых, в силу особенностей современных программно-аппаратных архитектур даже при запуске на одной и той же платформе результаты профилирования не будут повторяться, они плавают в некотором диапазоне значений. Заинтересованному читателю можно порекомендовать книгу «Крис Касперски. Техника оптимизации программ. Эффективное использование памяти», где подробно рассматривается этот вопрос.

Тем не менее, указанные замечания не могут считаться основанием для сомнений в достоверности эксперимента, поскольку относительные значения всегда будут приблизительно одинаковыми независимо от используемых программно-аппаратных средств.

(обратно)

28

Снижается время выполнения – увеличивается быстродействие, т. е. эти показатели обратно пропорциональны.

(обратно)

29

Здесь необходимо уточнить: речь идет только об интерфейсе API, т. е. его видимой части. В реализации API шаблоны использовать можно и нужно.

(обратно)

30

Но не шаблон класса, в шаблонах классов пакет параметров может быть только один. Кроме того, если в шаблоне объявляется пакет параметров, он должен быть последним в списке параметров шаблона.

(обратно)

31

Это связано с тем, что функция получения элемента кортежа по индексу объявлена как шаблон с параметром – числовым значением. Переменные не могут выступать параметрами шаблона.

(обратно)

32

В отличие от шаблонов классов, шаблоны функций могут быть перегружены. Если бы допускалась специализация шаблонов функций, то возникала бы неопределенность выбора перегруженной и специализированной функции.

(обратно)

33

Справедливости надо отметить, что идентификация получателей все-таки возможна. Для этого можно использовать, например, итератор контейнера либо указатель на объект std::function, либо, например, динамически присваивать объекту контейнера какое-нибудь значение. Однако это было бы плохим решением в силу целого ряда причин:

1) нарушается важнейший принцип проектирования – разделение интерфейса и реализации. Мы жестко завязываемся на структуру хранения объектов вызовов, поэтому архитектура получается монолитной;

2) идентификаторы объектов не несут никакой смысловой нагрузки, это просто некие абстрактные значения;

3) идентификаторы не детерминированы, при добавлении объекта в контейнер идентификатор получит произвольное значение;

4) идентификаторам объектов невозможно назначить заранее заданные значения;

5) в силу вышеуказанных причин невозможно реализовать логические протоколы обмена.

(обратно)

34

Контейнер std::map требует именно такой предикат, less, который возвращает истину в случае, если первый элемент меньше второго. Другие контейнеры могут требовать иные предикаты, например, проверку на равенство equal.

(обратно)

35

Диаграмма классов изображена в формате UML. Читателям, которые не знакомы с указанным графическим языком моделирования, можно порекомендовать книгу «Леоненков А. В. Самоучитель UML 2».

(обратно)

36

Например, функция возвращает только положительные значения, в этом случае можно считать, что отрицательное значение сигнализирует о возникновении ошибки. Но если функция может возвращать значения с любым знаком, то неясно, какое из них назначить индикатором ошибки.

(обратно)
--">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.