Функции в С++: перегрузка, значения по умолчанию

В С++, в отличие от языка программирования C, в ситуациях, когда фактические параметры не соответствуют типам подходящих формальных параметров, не предполагаются автоматические изменения. По этой причине часто говорят, что язык С++ гарантирует строгий контроль типов. Из-за этого свойства контроль соответствия типов фактических и формальных аргументов в языке программирования C++ выполняется ещё на этапе компиляции. Обязательное строжайшее соответствие типов между фактическими и формальными аргументами нуждается в том, чтобы до первого обращения к функции в модуле было помещено её определение или описание (прототип), заключающее в себе данные о типе возвращающего значения (результата) и о типах всех аргументов. Такой выбор прототипа или полного определения обеспечивает возможность компилятору выполнять проверку на соответствие типов всех аргументов.
Функции в С++: перегрузка, значения по умолчанию