![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Rogue |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.5.2006 Репутация: нет Всего: нет |
Может мне кто-нибудь объяснить почему данный код работает.
|
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
а почему он не должен работать?
здесь у тебя явное приведение типа
ptr - тип указателя на функцию-эллипсис (неизвестное число параметров) при вызове ф-ии через f можно указывать произвольное число параметров все будет нормально если это количество (и качество Добавлено @ 10:33 у тебя сигнатуры вызовов ф-ии через f совпадают с фактическими сигнатурами ф-ий f1, f2, f3 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| AlanG |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.5.2006 Где: РашЫн ФидирейшЫн Репутация: нет Всего: нет |
Не понял, а для чего тогда это свойство- указывать на произвольное число параметров, когда все будет нормально, только если это кол-во будет таким же, как и в функции на которую в действительности указывет f ? Еще вопросик. Интересно, для чего нужно приводить функцию f1() в тип ptr? Для того чтобы f могла нормально ссылатся на f1()? |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Потому, что это разные типы
"Указатель на функцию, принимающую один инт и ничего не возвращаю" и "Указатель на функцию с переменным числом параметров" -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| AlanG |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.5.2006 Где: РашЫн ФидирейшЫн Репутация: нет Всего: нет |
Мне вообще давно мучает вопрос о типах-функций, т.е. что есть тип-функция? Тип построен на том что имеет эта функция (т.е. например данные которые она хранит и с которыми она оперирует), или тип как то связан с возвращаемыми (или не возвращаемыми) значениями, может есть какая-то связь с формальными параметрами? Все, кажется понял. Значит изначально (когда создается указатель) тип ptr нужен для того, чтобы у указателя была возможность ссылатся на функцию имеющую любое кол-во параметров. Т.е. после присвоения указателю ссылки на функцию, этот указатель уже имеет свойство ссылатся на любую функцию имеющую такое же число агрументов, что и функция на которую перед этим присвоили указатель. В следствие этого возникает мысль, о том что тип в данном случае исходит из кол-ва аргументов используемых в функции. А вот как на счет качества, т.е. типа аргументов, пока вопрос, но по словам MAKCim качество тоже должно совпадать. Это сообщение отредактировал(а) AlanG - 27.5.2006, 15:51 |
|||
|
||||
| MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
вообщем да
нет, оно может не совпадать совпадение необходимо для корректной работы в случае несовпадения не гарантируется правильность например
Это сообщение отредактировал(а) MAKCim - 27.5.2006, 16:40 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |