Перегрузка функций 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++
Вектор. Часть 0.
Вектор. Часть 1.
Вектор. Часть 2.
Указатели
Классы
SFML
Тетрис на C++ с библиотекой SFML2
SDL
Массив Структур
Как узнать тип переменной C++
Решение задач на C++
Как создать пустую строку в C++
Errors C++
Share in social media: