Перегрузка функций 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)'