изучение прототипов функций и перегрузок функций - PullRequest
0 голосов
/ 19 октября 2010

Может ли кто-нибудь дать мне пример перегрузки функций в c ++ с 4 прототипами функций? я до сих пор не понимаю их достаточно хорошо ..

Извините, вопрос новичка, спасибо, что заглянули.

Адам Рамадан

1 Ответ

3 голосов
/ 19 октября 2010

Ниже приведены объявления функций C ++, которые обычно находятся в файле заголовка (.h или .hpp). Эти конкретные объявления не имеют кода. Код находится в определении, показанном ниже.

int sum(int a, int b);
int sum(int a, int b, int c);
int sum(int a, int b, int c, int d);
int sum(int a, int b, int c, int d, int e);

Приведенные выше четыре функции имеют одинаковое имя, но компилятор C ++ вызовет ту, чья сигнатура параметра совпадает с сигнатурой в вызывающем коде. Цель объявления - сообщить компилятору тип возвращаемого значения и сигнатура параметра функции. Если несколько функций имеют одинаковые имена, но отличаются сигнатурой параметров, это называется перегруженной. Это функция C ++, отсутствующая в C. Обратите внимание, что возвращаемый тип нельзя использовать для дифференциации перегруженных функций.

Ниже приведены определения (реализации) перегруженных функций, которые обычно находятся в файле модуля (.cpp или .cc или .cxx). Вот где исполняемый код находится между фигурными скобками {}, которые окружают функциональный блок:

int sum(int a, int b)
{
    return (a + b);
}

int sum(int a, int b, int c)
{
    return (a + b + c);
}

int sum(int a, int b, int c, int d)
{
    return (a + b + c + d);
}

int sum(int a, int b, int c, int d, int e)
{
    return (a + b + c + d + e);
}

Пример использования:

std::cout << sum(3, 4, 5) << std::endl;

вызовет код для второй перечисленной выше перегруженной функции, которая принимает три параметра int.

...