Форум программистов, компьютерный форум CyberForum.ru

Интерфейсная ссылка vs лямбда - C++

Восстановить пароль Регистрация
 
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2133 / 966 / 222
Регистрация: 30.11.2013
Сообщений: 3,224
09.03.2016, 12:06     Интерфейсная ссылка vs лямбда #1
Добрый день,

если надо, чтобы класс А вслучаи определённого евента сообщил об этом нужного другому классу Б это можно сделать следующими способами:
- класс А принимает в конструкторе интерфейсную ссылку(указатель) - сохраняет у себя и вызывает в нужное время
- класс А принимает в конструкторе std::function<void()>, что является лямбдой или std::bind - сохраняет у себя и вызывает в нужный момент


Для меня оба варианта одинаковые, но с function надо повозится с указанием сигнатуры и/или их смене.

Какие преймущества/недостатки я упускаю?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2016, 12:06     Интерфейсная ссылка vs лямбда
Посмотрите здесь:

Лямбда выражения C++
Передача лямбда в функции C++
C++ лямбда функция
C++ Какова польза лямбда выражений
Почему не работают лямбда-выражения? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ct0r
C++/Haskell
 Аватар для ct0r
1549 / 568 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 1
09.03.2016, 12:52     Интерфейсная ссылка vs лямбда #2
Интерфейс - большие сложные системы, надежность и читабельность.
Функция - небольшие и часто изменяющиеся системы, гибкость.
rikimaru2013
09.03.2016, 12:55  [ТС]
  #3

Не по теме:

ct0r, краткость сестра таланта

Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
09.03.2016, 16:20     Интерфейсная ссылка vs лямбда #4
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
но с function надо повозится с указанием сигнатуры и/или их смене.
decltype же придумали
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2133 / 966 / 222
Регистрация: 30.11.2013
Сообщений: 3,224
09.03.2016, 16:26  [ТС]     Интерфейсная ссылка vs лямбда #5
ct0r, а я бы наоборот сказал - интерфейс более лёгкий и маленький. A function усложняет понимания в разы

Kastaneda, да я же в чистом виде имел - а не через эти огороды хелперов type deduction
hoggy
5114 / 2115 / 403
Регистрация: 15.11.2014
Сообщений: 4,800
Завершенные тесты: 1
09.03.2016, 19:06     Интерфейсная ссылка vs лямбда #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Какие преймущества/недостатки я упускаю?
тырфейсы
+ жесткость, надежность, отладка
- высокая связанность, не удобства изготовления и эксплуатации.

делегаты
+ жесткость, отсутствие связности, удобство эксплуатации
- ненадежность, затрудненная отладка

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

- ненадежность, крайне затрудненная отладка.


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

делегаты для взаимодействия компонентов разных подсистем
в рамках одного процесса.

систему сообщений для осуществления массовых рассылок,
для передачи сообщений в условиях,
когда отправителю наплевать,
получит ли кто нибудь его послание,
и для организации сетевых взаимодействий.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2133 / 966 / 222
Регистрация: 30.11.2013
Сообщений: 3,224
09.03.2016, 20:45  [ТС]     Интерфейсная ссылка vs лямбда #7
hoggy, так делегатов нету в С++.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2016, 21:25     Интерфейсная ссылка vs лямбда
Еще ссылки по теме:

C++ Рекурсивная лямбда
Что такое лямбда выражения? C++
C++ Лямбда функции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
hoggy
5114 / 2115 / 403
Регистрация: 15.11.2014
Сообщений: 4,800
Завершенные тесты: 1
09.03.2016, 21:25     Интерфейсная ссылка vs лямбда #8
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
так делегатов нету в С++
std::function ? не, не слышал.
Yandex
Объявления
09.03.2016, 21:25     Интерфейсная ссылка vs лямбда
Ответ Создать тему
Опции темы

Текущее время: 02:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru