С++, как и многие другие языки, позволяет давать разным функциям одинаковые имена. Но с определёнными оговорками. Например, вот так делать нельзя: int myFunc() {}; int myFunc() {}; Здесь мы объявили две функции с одинаковыми именами, и компилятор выдаст ошибку. Но как же высказанное выше утверждение? Ну да, я немного слукавил. В одной области видимости всё-таки не должно быть функций с одинаковыми именами. Но, дело в том, что здесь имеется ввиду полное имя функции, которое содержит не только идентификатор, но также и количество и тип возвращаемых значений. Поэтому вот эти функции С++ будет считать разными, а компилятор не выдаст ошибок: Возможность называть несколько функций одним и тем же именем называется перегрузкой функций. Если всё сделано правильно, так как на рисунке выше, то компилятор может отличить одну функцию от другой, несмотря на то, что у них одинаковые имена. Потому что тип и количество аргументов у них разные. И, как вы заметили, вызов этих функций в программе тоже име