С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/33: Рейтинг темы: голосов - 33, средняя оценка - 4.73
Заблокирован

Захват функции ?

23.07.2011, 14:35. Показов 7506. Ответов 79
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Полиморфизм

Полиморфизмом в программировании называется переопределение наследником функций-членов базового класса, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Figure
{
    ...
    void Draw() const;
    ...
};
 
class Square : public Figure
{
    ...
    void Draw() const;
    ...
};
 
class Circle : public Figure
{
    ...
    void Draw() const;
    ...
};
А как делают захват той или другой функции ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2011, 14:35
Ответы с готовыми решениями:

Захват всех значений в лямбда функции
Привет. Был вопрос на собеседовании "как сделать лямбда функцию так, чтобы список захвата мог принять любое значение"? Ну или...

предусмотреть динамический захват памяти, решение оформить в виде отдельной функции. В вещественной матрице размером NxN найти максимальный
В задаче предусмотреть динамический захват памяти, решение оформить в виде отдельной функции. В вещественной матрице размером NxN найти...

Захват файлов
Доброго здравия вам. Я новенький в си, но с большим удовольствием поглощаю основы. Использую VS. К сожалению я не могу позволить себе...

79
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
23.07.2011, 14:37
Цитата Сообщение от Uragaan Посмотреть сообщение
А как делают захват той или другой функции ?
чтоо вы понимаете под захватом?

Добавлено через 24 секунды
и функцию Draw надо бы сделать виртуальной
0
Заблокирован
23.07.2011, 18:23
можно разные версии выбирать
Circle().Figure::draw();
Circle().Circle::draw();
только не вызывай виртуальные функции в конструкторах или деструкторах
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.07.2011, 18:58
Цитата Сообщение от Uragaan Посмотреть сообщение
Полиморфизмом в программировании называется переопределение наследником...
Нет. Полиморфизмом называют не это. Читай внимательнее.
0
Заблокирован
23.07.2011, 20:13
динамический полиморфизм - наследование и виртуальные функции
статический полиморфизм - шаблоны
это вкратце
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.07.2011, 20:41
полиморфизм - использование дочерних классов через интерфейс базовых.
Переопределение функций это часть реализации, а не определение. Тем более, что полиморфизм может быть и без переопределения функций. Пользы ноль, но это возможно.

Добавлено через 1 минуту
Статический полиморфизм, это скорее красивое название. К полиморфизму отношения не имеющий.
Так же, как и шаблоны не являются определением статического полиморфизма.
0
Заблокирован
23.07.2011, 20:47
Цитата Сообщение от Deviaphan Посмотреть сообщение
это скорее красивое название
это суровая реальность

Цитата Сообщение от Deviaphan Посмотреть сообщение
К полиморфизму отношения не имеющий
прямое
Цитата Сообщение от Deviaphan Посмотреть сообщение
Так же, как и шаблоны не являются определением статического полиморфизма
шаблоны обеспечивают статический неинвазивный полиморфизм в с++.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
23.07.2011, 21:22
Цитата Сообщение от LosAngeles Посмотреть сообщение
неинвазивный
а что это означает?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.07.2011, 07:00
Цитата Сообщение от LosAngeles Посмотреть сообщение
прямое
Никакого.
Полиморфизм - это использование объекта неизвестного типа через известный интерфейс (базового класса).
В случае с шаблонами, работа происходит с объектами известного типа.

Цитата Сообщение от LosAngeles Посмотреть сообщение
статический полиморфизм - шаблоны
...
шаблоны обеспечивают статический неинвазивный полиморфизм в с++.
C++
1
2
3
4
5
template< class T>
struct S
{
    T a;
};
Шаблон есть. Покажи мне полиморфизм?

Добавлено через 4 минуты
P.S. Я категорически отказываюсь признавать (например) функцию std::sort (статически)полиморфной.

Добавлено через 2 минуты
Хотя, я тоже не дал определения полиморфизма, а написал о смысле его существования. Если определение, вдруг, вспомню, то напишу...
0
Заблокирован
24.07.2011, 07:36
Цитата Сообщение от Deviaphan Посмотреть сообщение
Полиморфизм - это использование объекта неизвестного типа через известный интерфейс (базового класса)
это динамический полиморфизм. Свет чтоли клином на позднем связывании. Даже в функциональных языках есть полиморфизм, хотя там нет никаких базовых классов и интерфейсов

Цитата Сообщение от Deviaphan Посмотреть сообщение
P.S. Я категорически отказываюсь признавать (например) функцию std::sort (статически)полиморфной.
Статический полиморфизм существует вне зависимости от того, что ты о нём думаешь. И она конечно полиморфна
Джоссатис и Вандервурд. Шаблоны С++. Справочник разработчика. Часть третья, глава 14.
Подробно описывается это явление. Авторы - люди работающие или работавшие в комиссии по стандартизации.
Ещё данное понятия юзает александреску и не раз в своей книге. Хотя у него может много книг, но я только одну читал, ну все думаю поняли какую. Там лень искать, по оглавлению фиг поймёшь где это, но где то вначале
Цитата Сообщение от Deviaphan Посмотреть сообщение
Шаблон есть. Покажи мне полиморфизм?
хотя я мог чё нибудь написать по быстрому, но примеров и так до кучи. Algorithm.h - десятки примеров и sort туда же
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.07.2011, 07:51
Цитата Сообщение от LosAngeles Посмотреть сообщение
но примеров и так до кучи
Мне не надо кучи. Речь о фразе "статический полиморфизм - шаблоны". Она однозначна. Если бы написал, что статический полиморфизм реализуется посредством шаблонов, я бы не придирался. Но ты написал иначе. Поэтому я и придираюсь. Не всё то, что шаблоны - полиморфизм.
0
Заблокирован
24.07.2011, 08:05
Цитата Сообщение от Deviaphan Посмотреть сообщение
Если бы написал, что статический полиморфизм реализуется посредством шаблонов, я бы не придирался
так пиши, то что думаешь, а не этот бред
Цитата Сообщение от Deviaphan Посмотреть сообщение
Статический полиморфизм, это скорее красивое название. К полиморфизму отношения не имеющий.
а то по этому сообщению складывается впечатление что ты совсем к другому придираешься
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.07.2011, 08:08
Цитата Сообщение от LosAngeles Посмотреть сообщение
а то по этому сообщению складывается впечатление что ты совсем к другому придираешься
К этому я тоже придираюсь, но уже не к тебе.)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.07.2011, 08:45
Я пишу проги с 1995-го, но до их пор не знаю, что такое "захват функции".
0
24.07.2011, 08:56

Не по теме:

поэтому ты "недохакер". Пока не узнаешь что это такое, не станешь хакером:D

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.07.2011, 09:07
LosAngeles, прям ты знаешь. Ещё перегрузку плацдарма сочини.
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
24.07.2011, 10:29
Цитата Сообщение от taras atavin Посмотреть сообщение
Я пишу проги с 1995-го, но до их пор не знаю, что такое "захват функции".
В С++ такого нет. Скорее всего автор топика имел ввиду возможность приписать функцию некоторому классу. Я плохо представляю, как это сделать в динамике, поскольку любой метод должен иметь явный или неявный параметр this (self), чего у функции нет по определению.

Добавлено через 1 час 7 минут
Нашел понятие "захват" в C#.
Захваченная внешняя переменная (captured outer variable) или просто захваченная переменная (captured variable) – это внешняя переменная, используемая внутри анонимного метода.
Это из замыканий.
http://sergeyteplyakov.blogspot.com/2010/04/c.html
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
24.07.2011, 10:46
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Нашел понятие "захват" в C#.
Захваченная внешняя переменная (captured outer variable) или просто захваченная переменная (captured variable) – это внешняя переменная, используемая внутри анонимного метода.
ну теперь срр может ответить лямбдой, а под переменной может подразумеваться и функтор, так что термин "захват функции" уместен, хоть и непонятен с ходу
1
24.07.2011, 10:59

Не по теме:

мой гиперфотонный суперскалярный вероятностый анализатор сообщает мне с точностью 98.6576865709806586%, что человек просто хотел выбирать какую функцию вызывать - из базового класса или "родную"

0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
24.07.2011, 12:05
Цитата Сообщение от Maxwe11 Посмотреть сообщение
ну теперь срр может ответить лямбдой,
Да, там даже есть такой термин "capture list" - список захвата, располагается между квадратными скобками.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2011, 12:05
Помогаю со студенческими работами здесь

Не работает захват видео
выдаёт вот такие ошибки: Первый этап обработки исключения в &quot;0x7c80be74 (kernel32.dll)&quot; в &quot;cam.exe&quot;: 0xC0000005: Нарушение прав...

Захват видео с экрана
Привет! С помощью чего можно захватить видео с экрана, желательно кроссово и на Qt, если нет, тогда чисто под винду ...

Бесконечный захват памяти
#include &lt;iostream&gt; using namespace std; typedef struct {double A;} F; void recurs (F X ; long i ) { i++ cout &lt;&lt; i&lt;&lt; &quot;...

Захват и управление видеопотоком
Здравствуйте. У меня определенная проблема, но нет знаний чтобы понять ее суть. Но есть стремление. Объясните пожалуйста, каким образом...

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


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

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru