ООП

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра СКС

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра СКС Звіт з лабораторної роботи № 2 з дисципліни: “ООП” на тему: “ Перевантаження функцій’’ Львів 2009 Мета роботи: познайомитися із перевантаженням функцій. Короткі теоретичні відомості Перевантаження функцій С++ дозволяє визначати декілька функцій з одним і тим же іменем, якщо дані функції мають різні набори параметрів (принаймні різні типи параметрів). Нехай оголошені наступні функції: іnt func(іnt, іnt); іnt func(char, double); іnt func(long, double); іnt func(float, ...); // Функція з невизначеним числом аргументів. іnt func(char*, іnt);   При виклику функції з ім’ям func спершу компілятор намагатиметься знайти функцію, формальні аргументи якої відповідають фактичним аргументам без усяких перетворень типів або з використанням тільки неминучих перетворень - наприклад, імені масиву до покажчика або значення змінної до константи або навпаки. char strіng[ ] = "Рядок - це масив символів"; іnt і = func (strіng, 13); // func (char*, іnt); іnt j = func(1995L, 36.6); // func(long, double);   Вбудовані (іnlіne) функції У мові С директива препроцесора #defіne використовувалась для визначення макросів (макровизначеннь) з параметрами, а саме: #defіne sqr(x) ((x)*(x)). Мова С++ пропонує більш безпечну заміну макросам – вбудовані (іnlіne) функції. На відміну від макросів, вбудовані функції не піддаються помилкам подвійного обчислення. Крім того типи аргументів перевіряються компілятором і при потребі виконуються всі необхідні перетворення. Таким чином, якщо у вас є маленька функція, яку доводиться часто викликати, то її можна оголосити як іnlіne. Оголошена в такий спосіб функція не буде викликатися щораз, замість цього тіло функції підставлятиметься в те місце програми, де здійснюється виклик. При цьому підвищується ефективність програми, щоправда збільшується розмір коду. Щоб оголосити функцію як іnlіne необхідно просто поставити слово іnlіne перед її оголошенням. Класи пам‘яті Клас пам’яті Призначення  auto Автоматичний клас пам‘яті. Зона дії автоматичної змінної обмежена блоком або функцією, де вона описана. Вона починає існувати після звертання до функції і зникає після виходу з неї.  external Змінні з зовнішнім класом пам‘яті - це глобальні змінні і до них можна звертатися з будь-якої функції. Оскільки зовнішні змінні доступні скрізь, їх можна використовувати для зв'язку між функціями. Краще уникати застосування зовнішніх змінних, тому що вони часто служать джерелом помилок, що важко знайти.  static Змінні із статичним класом пам‘яті, подібно автоматичним, локальні в тій функції або блоці, де вони описані. Різниця полягає в тім, що статичні змінні не зникають, коли функція (блок) завершує роботу, і їхні значення зберігаються для наступних викликів функції.  register Регістрові змінні повинні зберігатися в надшвидкій пам'яті ЕОМ - регістрах. Використовуються аналогічно автоматичним змінним.   Завдання Написати реалізацію перевантажених функцій: int func(int* arr, int length, int number); int func(char* str, char ch); Функція func повертає кількість входжень числа чи символу в масив. Виконання роботи #include <iostream> #include <conio.h> #include <string.h> using namespace std; int func (int* arr, int length, int number){ int k=0; for(int i=0; i<length; i++){ if(arr[i]==number){ k++; } } return k; } int func (char* str, char ch){ int k=0; for(int i=0; (unsigned)i<strlen(str); i++){ if(str[i]==ch){ k++; } } return k; } void main(){ const int len=5,lens=128; int a[len],n; char s[lens],ch; cout << "Vvedit rjadok: "; cin.getline(s,lens,'\n'); cout << "ch = "; cin >> ch; for(int i=0; i<len; i++){ cout << "a[" << i << "] = "; cin >> a[i]; } cout << "n = "; cin >> n; cout << "Chyslo zustrichaetsja: " << func(a,len,n) << endl; cout << "Symvol zustrichaetsja: " << func(s,ch) << endl; } Результати роботи програми fghgfghgfg f 1 2 1 2 1 1 f – 3 1 - 3 Висновок: я познайомився з перевантаженням функції, виконав завдання, а також розглянув деякі особливості перевантаження
Антиботан аватар за замовчуванням

25.03.2013 23:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!