Добро пожаловать в блог официального сайта www.cplus-plus.ru

Все представленные материалы в этом блоге находятся по адрусу www.cplus-plus.ru 
Сайт разработан с целью удобного изучения объектно-ориентированного программирования языка C++. Сайт содержит: большое количество cред разработки, видеоуроков, исходников, учебников C++ как для начинающих, так и для продвинутых!

Поиск по этому блогу

Каталог статей

вторник, 7 декабря 2010 г.

C++0x: Конвертируем лямбда-выражение в указатель на функцию

По роду деятельности мне часто приходится иметь дело с вычислительными
задачами. В них нередко нужно передавать указатель на функцию, чтобы,
например, построить график этой функции, или решить уравнение. Кроме
того, указатели на функцию обычно используются в различных GUI
фреймворках, чтобы указать, какое действие будет совершено при нажатии
на определённую кнопку.

В новом стандарте C++0x появились
зымыкания. Не вдаваясь в подробности, замыкания — это такие объекты,
которые позволяют создавать функции прямо в теле других функций. Если
подробнее — замыкания позволяют создавать функциональные объекты — то
есть объекты, для которых определён operator(). На хабре уже писали о
них: например тут.

Мне очень понравилось нововведение и я начал
им пользоваться. Но только вот незадача: по смыслу, замыкания и функции —
почти одно и то же, а использовать замыкания там, где должны
использоваться указатели на функции, сходу не получается. По стандарту,
замыкания без списка захвата должны свободно конвертироваться в
указатели на функции, но на практике такого не наблюдалось, видимо ещё
не реализовано. И я задался вопросом, можно ли использовать замыкания
там, где используются указатели на функции?

Рассмотрим пример.
Пусть у нас уже есть функция printFunctionTable, которая позволяет
распечатать таблицу значений функции, при этом аргумент пробегает
значения от 1 до 10.

Всю статью вы можете прочитать здесь

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

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

Объектно-ориентированное программирование на языке C++