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;

}


 

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

1253. Дільниця виготовлення гачкових колекторів електродвигунів приводу підлоготерів 403.5 KB
  Призначення та галузь застосування електродвигунів постійного струму малої потужності. Опис конструкції колектора електродвигуна малої потужності. Технічні умови на виготовлення колектора. Заходи по вдосконаленню діючого технологічного процесу. Нормування технологічного процесу виготовлення гачкового колектора.
1254. Расчет затрат участка по ремонту приборов системы питания АТП на 500 автомобилей ПАЗ-2305 123.5 KB
  Классификация предприятий автомобильного транспорта. Малые предприятия и индивидуальное предпринимательство на АТП. Расчет фонда заработной платы рабочих. Расчет накладных расходов, связанных с общей организацией цехового производства.
1255. Проектирование двухэтажного жилого здания 164 KB
  Объемные строительные системы, имеющие надземную и (или) подземную части, включающие в себя помещения, сети инженерно-технического обеспечения и системы инженерно-технического обеспечения. Здание в плане имеет неправильную форму . Здание двухэтажное с высотой этажа3,3м. Размеры здания в осях 14,3х13,5м. Отметка подошвы фундамента -1,85 м. Грунтовые воды отсутствуют.
1256. Создание предприятия ИП Британ 73.5 KB
  Наименование предприятия, его специализация форма собственности и адрес. Схема действующего гаражно-технологического процесса, его описание. Описание методов организации технологических процессов ТО и ремонта ПС. Ведомость оборудования и оснастки на предприятии по форме.
1257. Соціально-психологічне дослідження ревнощів чоловiкiв 115.5 KB
  Науково-теоретичні підходи до розуміння та дослідження почуття ревнощів чоловіків. Літературно-філософські підході до розуміння природи ревнощів. Методика емпірико-практичного дослідження почуття ревнощів у чоловіків. Емпірико-практичне дослідження особливостей почуття ревнощів у чоловіків. Експериментальне дослідження співвідношення ревнощів з іншими почуттями та емоціями.
1258. Технология изготовления детали подъемника (вала редуктора) 91.5 KB
  Тихоходный вал редуктора, массой 11 кг., является телом вращения. Вал считается жёстким, поскольку отношение длины к максимальному диаметру меньше 15. Выбор заготовки и метод её изготовления. Определение групп допусков на исходные размеры заготовки.
1259. Разработка технических требований к сборочной единице 349.5 KB
  Техническое описание сборочной единицы. Выбор степени точности зубчатой передачи и класса точности подшипников. Выбор посадок шлицевых соединений и резьбовых соединений. Выбор исполнительных размеров калибров и их расчет. Выбор параметров точности зубчатого колеса.
1260. Анализ рынка. Абсолютная доля рынка по сегментам 375 KB
  Абсолютная доля рынка по сегментам. Уровень овладения рынком или горизонтальное проникновение. Уровень приверженности марке. Модель формирования позиции отдельного потребителя по отношению к продукту. Средняя важность атрибута.
1261. Економічне обґрунтування діяльності підприємства 497 KB
  Дані методичні вказівки покликані допомогти студентам напряму Архітектура, Реставрація творів мистецтва і Дизайн (рівень бакалавра) в написанні, а головне у виконанні тих певних обчислень, які необхідні для визначення вартості підприємницького проекту та обґрунтуванні виробничої програми.