68957

Перевантаження шаблонної функції та їх специфікацій

Лекция

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

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

Украинкский

2014-09-28

34 KB

2 чел.

Лекція № 19

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

План

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

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

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

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

#include <iostream>

using namespace std;

// Перша версія шаблонної функції f().

template <class X> void f(X а){

cout « "Усередині функції f(X а)\n";

}

// Друга версія шаблонної функції f().

template <class X, class Y> void f(X а, Y b){

cout << "Усередині функції f(X а, Y b)\n";

}

int main() {

f(10); // Виклик функції f(X).

f(10, 20); // Виклик функції f(X, Y).

return  0;

}

Тут шаблон функції f () переобтяжений для одного і двох параметрів.

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

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

// Застосування стандартних параметрів в шаблонній функції.

#include <iostream>

using namespace std;

const int TABWIDTH = 8;

// Виводить на екран дані у позиції tab.

template<class X> void tabOut(X data, int, tab){

for(; tab; tab--)

for(int i=0; i<TABWIDTH; i++) cout « '  ' ;

cout « data « "\n";

}

int main() {

tabOut("Перевірка", 0);

tabOut(100,   1);

tabOutCX',   2);

tabOut(10/3, 3);

return 0;

}

Програма виводить на екран наступні повідомлення.

Перевірка

100

X

3

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

Обмеження на узагальнені функції

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

 

#include <iostream>

#include <cmath>

using namespace std;

void myfunc(int i){

cout « "Значення = " « i « "\n";

}

void myfunc(double d){

double intpart;

double fracpart;

fracpart = modf(d &intpart);

cout << "Дробова частина = " « fracpart;

cout « "\n";

cout « "Ціла частина = " << intpart;

}

int main() {

myfunc(1);

myfunc(12.2);

return 0;

}


 

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

50578. Специальные главы математического анализа 125.5 KB
  Общее решение - это решение, зависящее от произвольных констант или совокупность всех частных решений. Частное решение - это решение при фиксированном значении произвольных констант. Общий интеграл дифференциального уравнения
50580. Понятие компонента, компонентной модели, компонентно-ориентированного программирования 61 KB
  Что представляет собой компонент Компонент от лат. В программировании компонент это кирпичик программы состоящий из свойств properties методов methods и событий events. Свойства дают возможность управлять видом и поведением компонента методы использовать возможности предоставляемые компонентом а события реагировать на происходящие внутри компонента события программировать реакцию компонента на внешние события и т.
50583. Общественное сознание и правосознание 41.5 KB
  Правосознание – форма общественного сознания, в которой находят свое отражение – идеи, теории, доктрины, научная школа, взгляды, мнения, эмоции, переживания, общества по поводу права, законности, справедливости...
50585. ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ 4.04 MB
  Однако наблюдается тепловое движение неосновных носителей заряда через обратно смещенные переходы которое создает очень малый ток утечки между шиной питания и землей. На статический ток потребления оказывают влияние три фактора: температура сложность схемотехники напряжение питания рис. Типовая зависимость статического тока потребления от напряжения питания и температуры для ИС К564ЛЕ5 Типовая зависимость...