Перегрузка функций C++

Две разные функции могут иметь одно и то же название. Это можно сделать если у них разное число аргументов. Такая перегрузка считается хорошей практикой.

Пример перегрузки функции add это ещё одна функция add, но, например, с тремя параметрами.

double add(double a, double b, double c) { return a + b + c; }

Можно сделать перегрузку функции с одинаковым числом аргументов - если у аргументов разные типы. Это считается плохой практикой.

Перегрузку по типу возвращаемого значения делать нельзя.

#include <iostream> using namespace std; bool test(bool x) { return x; } bool test(double x) { return x > 0; } int main() { // 1 if (test(true)) { cout << "true passes the test" << endl; } // 2 if (test(3.2)) { cout << "3.2 passes the test" << endl; } // 3 if (test(3)) { cout << "3.2 passes the test" << endl; } return 0; }

1 и 2 могут спокойно существовать вместе. Но как только Вы захотите проверить целое число - получите ошибку.

1>C:\Users\eth1.ru\source\repos\project\example.cpp(55,5): error C2668: 'test': ambiguous call to overloaded function

1>C:\Users\eth1.ru\source\repos\project\example.cpp(20,6): message : could be 'bool test(double)'

1>C:\Users\eth1.ru\source\repos\project\example.cpp(15,6): message : or 'bool test(bool)'

Статьи о C++
Вектор
Указатели
Классы
SFML
Тетрис на C++ с библиотекой SFML2
SDL
Массив Структур
Как узнать тип переменной C++
Решение задач на C++
Как создать пустую строку в C++
Ошибки C++
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: