| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Хитрые указатель на функцию |
| Автор: Rogue 27.5.2006, 10:11 | ||
Может мне кто-нибудь объяснить почему данный код работает.
|
| Автор: MAKCim 27.5.2006, 10:31 | ||||
| а почему он не должен работать? здесь у тебя явное приведение типа
ptr - тип указателя на функцию-эллипсис (неизвестное число параметров) при вызове ф-ии через f можно указывать произвольное число параметров все будет нормально если это количество (и качество Добавлено @ 10:33 у тебя сигнатуры вызовов ф-ии через f совпадают с фактическими сигнатурами ф-ий f1, f2, f3 |
| Автор: AlanG 27.5.2006, 14:43 | ||
Не понял, а для чего тогда это свойство- указывать на произвольное число параметров, когда все будет нормально, только если это кол-во будет таким же, как и в функции на которую в действительности указывет f ? Еще вопросик. Интересно, для чего нужно приводить функцию f1() в тип ptr? Для того чтобы f могла нормально ссылатся на f1()? |
| Автор: DeadSoul 27.5.2006, 15:08 |
| Потому, что это разные типы "Указатель на функцию, принимающую один инт и ничего не возвращаю" и "Указатель на функцию с переменным числом параметров" |
| Автор: AlanG 27.5.2006, 15:45 | ||
Мне вообще давно мучает вопрос о типах-функций, т.е. что есть тип-функция? Тип построен на том что имеет эта функция (т.е. например данные которые она хранит и с которыми она оперирует), или тип как то связан с возвращаемыми (или не возвращаемыми) значениями, может есть какая-то связь с формальными параметрами? Все, кажется понял. Значит изначально (когда создается указатель) тип ptr нужен для того, чтобы у указателя была возможность ссылатся на функцию имеющую любое кол-во параметров. Т.е. после присвоения указателю ссылки на функцию, этот указатель уже имеет свойство ссылатся на любую функцию имеющую такое же число агрументов, что и функция на которую перед этим присвоили указатель. В следствие этого возникает мысль, о том что тип в данном случае исходит из кол-ва аргументов используемых в функции. А вот как на счет качества, т.е. типа аргументов, пока вопрос, но по словам MAKCim качество тоже должно совпадать. |
| Автор: MAKCim 27.5.2006, 16:39 | ||||||
вообщем да
нет, оно может не совпадать совпадение необходимо для корректной работы в случае несовпадения не гарантируется правильность например
|