Другие языки программирования и технологии

Вопрос про функции (с++)

Я правильно понял что функция типа int возвращает значение, потому что она выполняет какие либо расчеты (которые могут быть заранее неизвестны) и поэтому она как бы возвращает результат своей работы? А функция типа void ничего не возвращает, то есть ничего не считает, а может просто например выводить какое то сообщение на экран (то есть мы заранее знаем какое сообщение она выведет). Итог: int - возвращает какое то число (результат вычислений), void - ничего не считает и возвращает какой нибудь текст который не меняется
Роман Вержев
Роман Вержев
5 543
void - ничего не считает и возвращает какой нибудь текст который не меняется/
Может считать очень много чего, но ничего не вернет. в том числе "какой-нибудь текст".
Функции выполняют две вещи:
1. на основании переданных аргументов и окружения выполняют вычисления и возвращают результат. void - лишь частный случай такого результата.
2. производят некие побочные эффекты, например, вывод на экран.
Если результат функции не зависит от аргументов и окружения (void - типичный пример такого результата), значит функция написана только для побочных эффектов.
Если результат функции зависит только от аргументов, не зависит от окружения - получаем "функцию" в математическом смысле этого слова. если такая математическая функция еще и побочных эффектов не производит - получаем так называемую "чистую" функцию. чистые функции легко писать и отлаживать. их поведение предсказуемо.
АР
Александр Раков
25 516
Лучший ответ
Нет, не правильно. Функция может ничего не вычислять но возвращать int, равно как и функция, которая ничего не возвращает может выполнять любые вычисления. Одно другому не помеха.
Только выводить на экран функция может ОДНО из ТЫСЯЧИ сообщений.
Влад Сутягин
Влад Сутягин
73 717
Функция может не только возвращать или не возвращать какое-то значение, но и менять объявленные вне ее переменные или менять значения передаваемых ей параметров.
А функция void может быть в классе, который содержит кучу полей. Вот она все "считает", а потом эти поля используются. the_class->eval(); int a = the_class->count; struct_type *pages = the_class->pages; и т. д....
Функция выполняет какие-то действия, т. е. всегда "считает" какой-бы она не была. Может она вообще возвращает код ошибки, который можно игнорировать.
Kuanishbek ***
Kuanishbek ***
27 070