67356

Перевантаження шаблонної функції

Лекция

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

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

Украинкский

2014-09-07

70 KB

1 чел.

Лекція № 20

Тема: Перевантаження шаблонної функції

План

  1.  Механізм перевантаження специфікації шаблону функції
  2.  Використання стандартних параметрів у шаблонних функціях
  3.  Обмеження, які застосовуються при використанні узагальнених функцій
  4.  Приклад створення узагальненої функції abs()

  1.   Механізм перевантаження специфікації шаблону функції

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

Приклад. Демонстрація механізму перевизначення специфікації шаблону функції

    // Перша версія шаблону Fun().

template <class aType> void Fun(aType a)

{     cout << "Виконується функція Fun(aType a)" << endl;

}

    // Друга версія шаблону Fun().

template <class aType, class bType> void Fun(aType a, bType b)

{     cout << "Виконується функція Fun(aType a, bType b)" << endl;

}

void main()

{     Fun(10);            // Викликається функція Fun(a).

      Fun(10, 20);           // Викликається функція Fun(a, b).

}

   У цьому коді програми шаблон для функції Fun() перевизначається, щоб забезпечити можливість прийняття як одного, так і двох параметрів.

  1.   Використання стандартних параметрів у шаблонних функціях

   У шаблонних функціях можна змішувати стандартні параметри з узагальненими параметрами типу. Ці параметри працюють так само, як і у будь-якій іншій функції. Розглянемо такий приклад.

Приклад. Демонстрація механізму використання стандартних параметрів у шаблонній

                 функції

   // Відображення даних задану кількість разів.

template<class aType> void repeat(aType data, int times)

{    int tim = times;

     do

     {     cout << tim – times + 1 << " ==> " << data << endl;

            times--;

      } while(times);

      cout << endl;

}

void main()

{    repeat("Це тест.", 3);

     repeat(100, 5);

     repeat(99.0/2, 4);

}

    Ось які результати генерує ця програма.

1 ==> Це тест.

2 ==> Це тест.

3 ==> Це тест.

1 ==> 100

2 ==> 100

3 ==> 100

4 ==> 100

5 ==> 100

1 ==> 49.5

2 ==> 49.5

3 ==> 49.5

4 ==> 49.5

 

    У цьому коді програми функція repeat() відображає свій перший аргумент стільки раз, скільки задано її другим аргументом. Оскільки перший аргумент має узагальнений тип, то функцію repeat() можна використовувати для відображення даних будь-якого типу. Параметр times – стандартний, він передається за значенням. Змішане задавання узагальнених і стандартних параметрів, як правило, не викликає жодних проблем їх реалізації, застосовується найчастіше у програмуванні.

  1.   Обмеження, які застосовуються при використанні узагальнених функцій

    Узагальнені функції подібні до перевизначених функцій, але мають більше обмежень з їх застосування. При перевизначенні функцій в тілі кожної з них зазвичай записують різні дії. Але узагальнена функція повинна виконувати одні і ті самі дії для всіх її версій; відмінність між версіями полягає тільки в типі оброблюваних даних. Розглянемо приклад, у якому перевизначені функції не можна замінити узагальненою функцією, оскільки вони виконують різні дії:

void outdata(int i)

{    cout << i << endl;

}

void outdata(double d)

{    cout << d * 3.1416 << endl;

}

  1.   Приклад створення узагальненої функції abs()

    Функція abs() -  функція, яка повертає абсолютне значення заданого аргументу. Оскільки процедура повернення абсолютного значення числа однакова для всіх типів числових значень, то функція abs() може слугувати типовим прикладом для створення шаблонної функції.

    За наявності узагальненої версії функції abs() компілятор зможе автоматично створювати необхідну її версію. Програміст у цьому випадку звільняється від написання окремих версій для кожного типу даних.

    

Приклад. Демонстрація механізму створення узагальненої версії функції, яка повертає  

                 абсолютне значення числа

 

template <class aType> aType myAbs(aType n)

{    return n < 0 ? -n : n;

}

void main()

{    cout << myAbs(-10) << endl;            // Для типу int

     cout << myAbs(-10.0) << endl;        // Для типу double

     cout << myAbs(-10L) << endl;         // Для типу long

     cout << myAbs(-10.0F) << endl;      // Для типу float

}

Головне тут те, що один і той самий алгоритм повинен застосовуватися до широкого діапазону типу даних.


 

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

36957. Дослідження надійності нерезервованої системи 36.8 KB
  При постійних інтенсивностях відмов елементах де інтенсивність відмови системи. Ризик системи Rct і обчислюються по наступним формулам: де Qct=1Pct вірогідність відмови системи протягом часу t; qit вірогідність відмови iго елементу системи протягом часу t. Якщо елементи системи рівно надійні то співвідношення Rct до має вигляд: .
36958. Волоконно-оптические системы передачи повышенной пропускной способности 676 KB
  Основным преимуществом ВОЛС к высокой помехоустойчивостью; качества длинной линии передачи и корреляция; параметры стабильности воспроизведения канала; Цифровой строительство сети; И самое главное - очень технико-экономические показатели
36959. Спрощена інструкція по роботі з інформаційною системою для бізнес-планування Project Expert 790 KB
  Вікно Новый проект назву проекту наприклад Проект підприємства з випуску офісних меблів; варіант довільну назву варіанта наприклад: 1 або Оптимістичний; прізвище автора код спеціальності та номер групи наприклад Іванов І. В результаті зявиться робоче вікно Содержание рис. Робоче вікно Содержание Примітка: протягом подальшої роботи над проектом слід час від часу зберігати файл проекту. Робоче вікно Валюта проекта 2.
36960. Графічне представлення розподілів за допомогою функції «Гистограмма» 51.5 KB
  Загальні відомості Функція Гистограмма із пакету Анализ данных використовується для обчислення вибіркових і інтегральних частот попадання даних у вказані інтервали значень. Використання функції Гистограмма припускає існування трьох масивів: Входной интервал елементи таблиці де розміщені дані вибірки Интервал карманов елементи таблиці що вказують як вибираються інтервали згуртовування частот вибірки Выходной интервал це елементи таблиці куди буде виведений розподіл згрупованих частот. Завдання: Створити вибірку ціни у...
36961. Аналіз наукової, теоретичної та методичної літератури 62 KB
  Поглибити знання з Основ наукових досліджень щодо класифікації використання джерел наукової інформації.Виробити вміння аналізувати джерела наукової інформації та розвивати наукове мислення.Класифікація джерел наукової інформації. Опрацювати одне з джерел наукової інформації на вибір студента за планом: 1.
36962. Операційна система Microsoft Windows. Робота з файлами, вікнами. Програма Провідник 5.4 MB
  Мета: Сформувати практичні вміння та навички роботи з інтерфейсом та файлами операційної системи Microsoft Windows. Вміти: вмикати та вимикати компютер з встановленою ОС Windows; управляти роботою ПК за допомогою маніпулятора мишка та клавіатури; викликати та використовувати пункти головного меню; працювати з відкритими вікнами та управляти відображенням їх вмісту; розпізнавати зовнішні пристрої підєднані до компютера; розрізняти обєкти папка файл ярлик; знаходити потрібні файли за певними критеріями; використовувати...
36963. Робота з базою знань «План-карта шляхів» 40 KB
  COM командою lod ‘edit Сформувати файл програми для роботи з базою знань defun можливо стан карта mpcn 'lmbd правило if eql стан cr правило list правило nil карта defun вглибину поточнийплан ppend можливо cdr cr поточнийплан план1...
36964. Комп’ютера, як мультимедійний центр 183.74 KB
  Теоретичні відомості Програма Windows Movie Mker призначена для створення слайдівфільмів і відеокліпів на основі записаного вихідного матеріалу. Відкриття програми Windows Movie Mker Пуск Все программы Windows Movie Mker. або Пуск Все программыСтандартныеWindows Movie Mker. Програми Windows Movie Mker дозволяє записувати на комп'ютер зображення і звук з таких пристроїв як відеокамера цифрова чи аналогова відеокасета звичайна антена сигнал кабельного чи супутникового телебачення.
36965. Створення Windows Forms додатків на мові програмування C# 35 KB
  Створити Windows Forms додаток для вирішення відповідної задачі для чого: Розробити необхідну структуру вхідних віхідних даних та діалогових вікон додатку в яких розмістити необхідні елементи керування. Розробити додаток Облік успішності студентів для оперативного обліку успішності студентів в сесію деканом заступниками декана і співробітниками деканату. Розробити додаток Особисті справи студентів для отримання відомостей про студентів співробітниками деканату профкому і відділу кадрів. Розробити додаток Філіали банків .