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;

}


 

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

16785. Золото есть 87 KB
  Золото есть Если бы Джек Лондон оценил сегодня состояние золотодобывающей отрасли в Сибири то наверняка написал бы: Золота там нет. Лет 100 назад во времена освоения богатейших россыпей в Северной Америке когда старателю требовались только лоток и лопата за
16786. Золото и серебро Латинской Америки 29.5 KB
  Золото и серебро Латинской Америки. В Латинской Америке ежегодно производится примерно 300 т золота 15 мирового производства и свыше 4200 т серебра 23 мирового производства. Крупнейшим производителем золота является Перу 130 т больше всего производят серебра Мексика 2744...
16787. Золото 1.09 MB
  Золото Введение Золото сыграло большую роль в развитии капитализма. В современных условиях оно занимает важное место в капиталистической экономике и международных отношениях служит символом богатства и власти. Химический элемент номер 79 тяжелый блестящий
16788. ЗОЛОТОДОБЫЧА в районе Челябинска 172 KB
  ЗОЛОТОДОБЫЧА в районе Челябинска Датой офиц. открытия и начала З. на Урале считается 1745. Однако задолго до этого племена и народы населявшие его терр. уже знали и добывали золото. Точных указаний о древней З. на Юж. Урале пока н
16789. Золотой запас 65.5 KB
  Золотой запас Золотым запасом называют золото в виде российских и иностранных монет которые находились в хранилищах финансовых ведомств Российской империи. В запас входили так же слитки золотые самородки и кружки без аверса и реверса. До 1914 года в Росси дейст...
16790. ЗОЛОТО НЕДР РОССИИ МИФЫ, РЕАЛИИ, ПРОБЛЕМЫ 225.5 KB
  И.Б.Флеров ЗОЛОТО НЕДР РОССИИ МИФЫ РЕАЛИИ ПРОБЛЕМЫ Два обстоятельства побудили меня взяться за перо обращаясь к довольно сложной для России проблеме добычи золота. Первое заключается в том что несмотря на неуклонно развивающиеся рыночные отношения в стране в среде...
16791. ИНОСТРАННЫЕ КОМПАНИИ В РОССИЙСКОЙ ЗОЛОТОДОБЫЧЕ 148.5 KB
  ИНОСТРАННЫЕ КОМПАНИИ В РОССИЙСКОЙ ЗОЛОТОДОБЫЧЕ Автор: Кочетков А. Я. кандидат геологоминералогических наук ИАЦ Минерал ФГУНПП Аэрогеология Несмотря на то что участие зарубежных промышленных и финансовых компаний в экономической жизни современной Росс...
16792. КИНЕТИЧЕСКИЕ ЗАКОНОМЕРНОСТИ ИЗМЕЛЬЧЕНИЯ ЗОЛОТОСОДЕРЖАЩИХ РУД 37 KB
  КИНЕТИЧЕСКИЕ ЗАКОНОМЕРНОСТИ ИЗМЕЛЬЧЕНИЯ ЗОЛОТОСОДЕРЖАЩИХ РУД Александрова Т.Н. Институт горного дела ДВО РАН Литвинова Н.М. Институт горного дела ДВО РАН В процессе измельчения рудная масса испытывает комплекс физикохимических воздействий: механическую сухое и...
16793. КОНЪЮНКТУРА РЫНКА ЗОЛОТА РОССИИ 231 KB
  КОНЪЮНКТУРА РЫНКА ЗОЛОТА РОССИИ Конъюнктура рынка золота как и любого другого товара определяется соотношением предложения и спроса на него в разных сферах экономики. Объемы поступления золота зависят от уровня развития золотодобывающей промышленности а тот в сво...