Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Перегрузка функций в C++: практическое руководство

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

Узнайте, как C++ позволяет определять несколько функций с одинаковым именем, но разными сигнатурами, на практических примерах.

В C++ две функции могут иметь одно имя, если их списки параметров отличаются по типу, количеству или порядку. Такие варианты называются перегруженными функциями.

Например:

// То же имя, разные аргументы
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }

Все четыре объявления выше образуют валидный набор перегрузок. Обратите внимание: типы возврата не учитываются при разрешении перегрузки; важен только список параметров. Например:

// Ошибка компиляции: идентичные сигнатуры
int test(int a) { }
double test(int b){ }

Здесь обе функции имеют одно имя, тот же тип и то же число аргументов, поэтому компилятор отвергает дубликат.


Пример 1: перегрузка с разными типами параметров

// Вычисление абсолютного значения для int и float
#include <iostream>
using namespace std;
// версия для float
float absolute(float var){
    return (var < 0.0f) ? -var : var;
}
// версия для int
int absolute(int var){
    return (var < 0) ? -var : var;
}
int main(){
    cout << "Absolute value of -5 = " << absolute(-5) << endl;
    cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl;
    return 0;
}

Результат

Absolute value of -5 = 5
Absolute value of 5.5 = 5.5

Эта программа перегружает absolute(); компилятор выбирает подходящую версию на основе типа аргумента.


Пример 2: перегрузка с разным количеством параметров

#include <iostream>
using namespace std;
// Два параметра
void display(int var1, double var2){
    cout << "Integer: " << var1;
    cout << " & Double: " << var2 << endl;
}
// Один double параметр
void display(double var){
    cout << "Double: " << var << endl;
}
// Один int параметр
void display(int var){
    cout << "Integer: " << var << endl;
}
int main(){
    int a = 5;
    double b = 5.5;
    display(a);
    display(b);
    display(a, b);
    return 0;
}

Результат

Integer: 5
Double: 5.5
Integer: 5 & Double: 5.5

Вызов display() разрешается в правильную перегрузку на основе числа и типов аргументов.


Примечание: Стандартные библиотечные функции вроде sqrt() сильно перегружены, принимая int, float, double и другие типы, обеспечивая гибкость разработчикам.

Язык C

  1. Освоение перегрузки методов в C#: концепции, примеры и лучшие практики
  2. Освоение перегрузки конструкторов в C#
  3. Освоение операторов C++: полное руководство с практическими примерами
  4. Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
  5. Как передавать массивы в функции в C++: практическое руководство
  6. Дружественные функции и классы в C++: мастерство контроля доступа
  7. Как передавать одномерные и двумерные массивы в функции в C — практическое руководство
  8. Перегрузка операторов в C++: практическое руководство с примерами кода
  9. Функции в C++: подробное объяснение с практическими примерами кода
  10. Функции в C: объявление, определение, вызов, аргументы (по значению и по ссылке), рекурсия