Как Boost Bind, Boost Function, Boost Signals и указатели функций C ++ все связаны друг с другом? - PullRequest
3 голосов
/ 09 сентября 2010

Как видно из названия, у меня возникают проблемы с просмотром, как Boost Bind, Boost Function, Boost Signals и указатели функций C ++ все играют вместе.

Насколько я понимаю, Boost Bind и Boost Function в совместной работекак Сигналы, в то время как Сигналы - это абстракция над Привязкой и Функцией.

Кроме того, по сравнению со стандартными указателями функций C ++, почему Boost Function / Bind предпочтительнее?

Надеюсь, вы поможете мне разобраться в некоторых моих недоразумениях.В основном я пытаюсь найти лучшее / простое решение для обратного вызова с использованием C ++.:)

1 Ответ

1 голос
/ 09 сентября 2010

См. здесь обсуждение различных концепций c-function-указателей, функции Boost и сигнала Boost.

Имхо главное отличие между двумя объектами функции наддува и указателями c-function заключается в возможности добавлять параметры по умолчанию.Это облегчает использование методов (функций с невидимым первым параметром -> указатель this) в качестве объектов функций.Также возможно адаптировать функции, которые требуют использования параметров в качестве объектов функций с разными аргументами.

Сигнал / Слот - это совсем другое: он позволяет публиковать сигнал, на который клиенты могут подписаться.Сигнал можно увидеть в виде списка указателей на функции.Клиенты могут добавлять свои указатели функций в список.Когда сигнал вызывается, все указатели функций в списке информируются / вызываются.

...