69707

Перевантаження функцій

Лекция

Информатика, кибернетика и программирование

Перевантаження функцій — це використання одного імені для декількох функцій. Секрет перевантаження полягає в тому, що кожне перевизначення функції повинне використовувати або інші типи параметрів, або іншу їх кількість. Тільки ці відмінності дозволяють компілятору визначати...

Украинкский

2015-01-11

27.5 KB

1 чел.

Тема: Перевантаження функцій

Перевантаження функцій — це використання одного імені для декількох функцій. Секрет перевантаження полягає в тому, що кожне перевизначення функції повинне використовувати або інші типи параметрів, або іншу їх кількість. Тільки ці відмінності дозволяють компілятору визначати, яку функцію слід викликати в тому або іншому випадку. Наприклад, в наступній програмі функція myfunc () перегружена для різних типів параметрів.

#include <iostream>

using namespace std;

int myfunc(int i);

// Ці варіанти розрізняються типами параметрів

double myfunc(double і);

int main()

{

cout << myfunc(10)<< " "; // Виклик функції myfunc(int i)

cout << myfunc(5.4); //Виклик функції myfunc(double i)

return 0;

}

double myfunc(double i) { return і; }

int myfunc(int i) { return і; }

В наступній програмі перевантажені варіанти функції myfunc () використовують різну кількість параметрів.

#include <iostream>

using namespace std;

int myfunc(int i);

// Ці варіанти розрізняються кількістю параметрів

int myfunc(int і, int j);

int main()

{

cout << myfunc(10)<< " "; // Виклик функції myfunc(int i)

cout << myfunc(4, 5); // Виклик функції myfunc(int i, int j)

return 0;

int myfunc(int i)

{

return i;

}

int myfunc (int і, int j )

{

return x*j ;

}

Слід пям'ятати, що перевантажені функції повинні відрізнятися типами або кількістю параметрів. Тип значення, яке повертається, не дозволяє перенавантажувати функції. Наприклад, наступний варіант перевантаження функції myfunc () невірний.

int myfunc(int i); // Помилка: різних типів повертаємого

float myfunc(int і);

// значення недостатнь для перевантаження

Іноді оголошення двох функцій зовні відрізняються, але фактично співпадають. Приклад такого оголошення:

void f (int *p) ;

void f(int p[]); // Помилка, вирази *р і р[] еквівалентні

Треба пам'ятати, що компілятор не розрізняє виразу *р і р [ ]. Хоча зовні два прототипи функції f розрізняються, насправді вони повністю співпадають.


 

А также другие работы, которые могут Вас заинтересовать

51120. Исследование устойчивости системы автоматического регулирования с использованием критериев Гурвица и Михайлова 73.21 KB
  По критерию Михайлова система 1 устойчива график начинается на положительной вещественной полуоси проходит против часовой стрелки 3 квадранта система 2 неустойчива график проходит через 3 квадранта но не против часовой стрелки система 3 устойчива график проходит через точку 00. для системы третьего порядка критерий Гурвица сводится к положительности всех...
51121. Моделювання лінійних систем в часовій та частотній області 500.67 KB
  Сформувати два синусоїдальних сигнали частоти 3 та 20 Гц тривалістю1 с. Проілюструвати властивість адитивності системи, визначивши реакціюсистеми спочатку на кожний з сигналів окремо, а потім на суму цих сигналів.Проілюструвати властивість однорідності системи.
51122. Разработка программы с использованием элементов Radiobutton, Button, Listbox 77.03 KB
  Задание на работу: Разработать программу с использованием элементов Rdiobutton Button Listbox. Предметная область фотопрокат. Код программы (файл Form1.cs)...
51123. Исследование устойчивости системы автоматического регулирования с использованием критерия Найквиста 50.13 KB
  В ходе лабораторной работы был изучен критерий устойчивости Найквиста. Получены АФЧХ разомкнутых систем с астатизмом и без, переходные характеристики замкнутых систем с астатизмом и без. По полученным характеристикам была определена устойчивость систем.
51124. Моделирование непрерывно-стохастической системы массового обслуживания 106.86 KB
  На вход n-канальной СМО с отказами поступает поток заявок с интенсивностью l = 6 заявок в час. Среднее время обслуживания одной заявки 0.8 часа. Каждая обслуженная заявка приносит доход 4у.е. Содержание одного канала обходится 2 у.е./час. Определить экономически целесообразное количество каналов.
51125. Спектральний аналіз сигналів за Фурьє 1.43 MB
  Як відомо, спектри всіх дискретних сигналів періодичні, а амплітудні спектри є парними функціями частоти. Засобами MatLAB можна розрахувати дві половини одного періоду спектру, які є дзеркальними копіями одна одної відносно частоти Найквіста. Через це на всіх графіках амплітудних спектрів достатньо і необхідно виводити лише половину періоду спектру, оскільки вона повністю описує амплітудний спектр
51126. Разработка текстового редактора с использованием файлового ввода/вывода 54.26 KB
  Задание на работу: Разработать текстовый редактор с использованием файлового ввода/вывода. Код программы (файл Form1.cs)...
51127. Исследование точности САУ в установившемся режиме 77.99 KB
  Графики ошибок Усилительное звено Пи-регулятор Дифференциальное звено Расчеты значений установившейся ошибки: Усилительное звено Пи-регулятор Дифференциальное звено Вывод В ходе лабораторной работы было исследовано влияния степени астатизма на установившуюся ошибку при ступенчатом воздействии.
51128. Фільтрація сигналів 889.81 KB
  Мета роботи: набути навичок проектування цифрових фільтрів, задавання специфікації фільтрів залежно від властивостей сигналів, які треба фільтрувати; набути навичок реалізації дискретної фільтрації сигналів у середовищі MatLAB.