Я работаю с функциями в первый раз, и мне любопытно, почему мы используем прототипы функций. Почему мы их используем? Нужно ли их использовать>Почему мы используем прототипы функций?
ответ
Существует разница между абсолютной потребностью и практической потребностью. Технически нам не нужны петлевые конструкции языка for
, do
и while
, они совершенно лишние. Практически все по-другому, вы не хотели бы сводиться к использованию goto
и longjmp
.
Технически propotypes необходимы только для рекурсивных функций и для использования указателей функций.
На практике они вам нужны, чтобы разделить больший исходный код на управляемые куски, модули и как более абстрактный вид вещей.
Один из альтернативных вариантов функционирования прототипов как абстрактное представление определения класса, может быть что-то вроде Eiffel's short tool, создавая абстрактное представление автоматически из полного исходного кода. Одним из вариантов рекурсивного набора функций является их вложение, определение функций внутри функций. В C++ это легко, через локальные классы в C++ 03 и теперь через lambdas в C++ 11, но не в C.
Извините за отправку этого ответа изначально без упоминания указателей на функции. Не знаю, почему это не появилось у меня в голове. Во всяком случае, теперь исправлено, видимо, прежде чем кто-нибудь заметил! :-) –
- 1. Почему мы используем прототипы
- 2. Почему мы используем шаблоны вместо функций?
- 3. Почему мы используем SimpleLoadTimeWeaver?
- 4. Почему мы используем web.xml?
- 5. Почему мы используем SpreadsheetApp.flush() ;?
- 6. Почему мы используем TaskStackBuilder?
- 7. Почему мы используем жидкость?
- 8. Почему мы используем HttpContext.Current?
- 9. Почему мы используем struts.custom.i18n.resources?
- 10. Почему мы используем tq_struct?
- 11. Почему мы используем HTTP?
- 12. Почему мы используем easytracker?
- 13. Почему мы используем xml?
- 14. Почему мы используем константы?
- 15. Почему мы используем system.out.flush()?
- 16. Почему мы используем jquery.klass?
- 17. Почему мы не используем базы данных функций вместо пакетов/библиотек?
- 18. Почему именно мы используем NoSQL?
- 19. Почему мы используем docker-registry?
- 20. Почему мы используем дополнительное выражение?
- 21. Почему мы используем усиление CORDIC?
- 22. Почему мы используем расширившуюся заявку
- 23. Почему мы используем дескрипторы SURF?
- 24. Почему мы используем Git Keys
- 25. Почему мы используем изображение Adjustement
- 26. Почему мы используем бесконтактный интерфейс?
- 27. Почему мы используем функцию конца?
- 28. Почему мы используем ephemeralSessionConfiguration здесь?
- 29. Почему мы используем Dynamic Proxy
- 30. Почему мы используем процедуры CLR
В C++ нет «прототипов функций». Это концепция C. C странно. –
@KerrekSB Объявление функций на C++ может быть описано как прототипы. –
В C++ я думаю, что основной причиной является безопасность типов. Компилятор не может проверить типы, которые вы передаете функции, если он не знает, как определяется функция. –