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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.88
Uragaan
Заблокирован
23.07.2011, 14:35     Захват функции ? #1
Полиморфизм

Полиморфизмом в программировании называется переопределение наследником функций-членов базового класса, например:
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;
    ...
};
А как делают захват той или другой функции ?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.07.2011, 14:37     Захват функции ? #2
Цитата Сообщение от Uragaan Посмотреть сообщение
А как делают захват той или другой функции ?
чтоо вы понимаете под захватом?

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

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

Цитата Сообщение от Deviaphan Посмотреть сообщение
К полиморфизму отношения не имеющий
прямое
Цитата Сообщение от Deviaphan Посмотреть сообщение
Так же, как и шаблоны не являются определением статического полиморфизма
шаблоны обеспечивают статический неинвазивный полиморфизм в с++.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
23.07.2011, 21:22     Захват функции ? #8
Цитата Сообщение от LosAngeles Посмотреть сообщение
неинвазивный
а что это означает?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.07.2011, 07:00     Захват функции ? #9
Цитата Сообщение от LosAngeles Посмотреть сообщение
прямое
Никакого.
Полиморфизм - это использование объекта неизвестного типа через известный интерфейс (базового класса).
В случае с шаблонами, работа происходит с объектами известного типа.

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

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

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

Цитата Сообщение от Deviaphan Посмотреть сообщение
P.S. Я категорически отказываюсь признавать (например) функцию std::sort (статически)полиморфной.
Статический полиморфизм существует вне зависимости от того, что ты о нём думаешь. И она конечно полиморфна
Джоссатис и Вандервурд. Шаблоны С++. Справочник разработчика. Часть третья, глава 14.
Подробно описывается это явление. Авторы - люди работающие или работавшие в комиссии по стандартизации.
Ещё данное понятия юзает александреску и не раз в своей книге. Хотя у него может много книг, но я только одну читал, ну все думаю поняли какую. Там лень искать, по оглавлению фиг поймёшь где это, но где то вначале
Цитата Сообщение от Deviaphan Посмотреть сообщение
Шаблон есть. Покажи мне полиморфизм?
хотя я мог чё нибудь написать по быстрому, но примеров и так до кучи. Algorithm.h - десятки примеров и sort туда же
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.07.2011, 07:51     Захват функции ? #11
Цитата Сообщение от LosAngeles Посмотреть сообщение
но примеров и так до кучи
Мне не надо кучи. Речь о фразе "статический полиморфизм - шаблоны". Она однозначна. Если бы написал, что статический полиморфизм реализуется посредством шаблонов, я бы не придирался. Но ты написал иначе. Поэтому я и придираюсь. Не всё то, что шаблоны - полиморфизм.
LosAngeles
Заблокирован
24.07.2011, 08:05     Захват функции ? #12
Цитата Сообщение от Deviaphan Посмотреть сообщение
Если бы написал, что статический полиморфизм реализуется посредством шаблонов, я бы не придирался
так пиши, то что думаешь, а не этот бред
Цитата Сообщение от Deviaphan Посмотреть сообщение
Статический полиморфизм, это скорее красивое название. К полиморфизму отношения не имеющий.
а то по этому сообщению складывается впечатление что ты совсем к другому придираешься
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.07.2011, 08:08     Захват функции ? #13
Цитата Сообщение от LosAngeles Посмотреть сообщение
а то по этому сообщению складывается впечатление что ты совсем к другому придираешься
К этому я тоже придираюсь, но уже не к тебе.)
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.07.2011, 08:45     Захват функции ? #14
Я пишу проги с 1995-го, но до их пор не знаю, что такое "захват функции".
LosAngeles
24.07.2011, 08:56
  #15

Не по теме:

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

taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.07.2011, 09:07     Захват функции ? #16
LosAngeles, прям ты знаешь. Ещё перегрузку плацдарма сочини.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
24.07.2011, 10:29     Захват функции ? #17
Цитата Сообщение от taras atavin Посмотреть сообщение
Я пишу проги с 1995-го, но до их пор не знаю, что такое "захват функции".
В С++ такого нет. Скорее всего автор топика имел ввиду возможность приписать функцию некоторому классу. Я плохо представляю, как это сделать в динамике, поскольку любой метод должен иметь явный или неявный параметр this (self), чего у функции нет по определению.

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

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2011, 12:05     Захват функции ?
Еще ссылки по теме:

Захват аудио и видео потоков C++
Захват ненужных данных C++
C++ Захват файлов

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
24.07.2011, 12:05     Захват функции ? #20
Цитата Сообщение от Maxwe11 Посмотреть сообщение
ну теперь срр может ответить лямбдой,
Да, там даже есть такой термин "capture list" - список захвата, располагается между квадратными скобками.
Yandex
Объявления
24.07.2011, 12:05     Захват функции ?
Закрытая тема Создать тему
Опции темы

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