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

Article author: Andrei Olegovich

Похожие статьи
Development in C++
Function overloading
Splitting code into parts
Vector
Pointers
Classes
SFML
Tetris in C++ with the SFML2 library
SDL
Array of structures
How to find out the type of a variable in C++
Problem solving in C++
How to create an empty line in C++
Errors C++

Search this site

Channel @aofeed Chat @aofeedchat

Contacts and cooperation:
I recommend our hosting beget.com
Write to info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: