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;

}


 

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

5522. Проектирование поворотного крана на неподвижной основе с электромагнитным захватом 819.5 KB
  Цель работы - спроектировать поворотный кран на неподвижной основе с электромагнитным захватом. В настоящем курсовом проекте приведены расчёты по проектированию крана настенного и расчеты параметров электромагнитного захвата. Проект состоит из ...
5523. Физико-математические принципы построения и концептуальный анализ первичных уравнений современной полевой теории электромагнетизма 449.5 KB
  Физико-математические принципы построения и концептуальный анализ первичных уравнений современной полевой теории электромагнетизма Известно, что в теории электричества базовой физической характеристикой материального тела является его электрический...
5524. Воля. Лекционное занятие. Методический проект. Проявления волевого поведения на практике 120 KB
  Воля Аудитория: студенты 2 курса дневного отделения факультета психологии. Обоснование темы: Волевые способности есть у каждого человека, лишь степень их развития может быть разной. Без воли человек не был бы те, кем является, а именно, разумным сущ...
5525. Климатическое описание воздушных трасс субарктической зоны 108 KB
  Климатическое описание воздушных трасс субарктической зоны. Введение. При организации воздушных рейсов различной протяженности должны быть обеспечены безопасность, высокая регулярность и экономичность полетов. В решении этих задач важную роль играет...
5526. Розрахунок аерації промислових будівель 115.82 KB
  Аерація промислових будівель Аерація - це організована та керована загальнообмінна природна вентиляція. При аераци зовнішнє повітря поступає у приміщення крізь відчинені нижні отвори - фрамуги вікон. Внутрішнє відпрацьоване повітря, що виносить...
5527. Сельское хозяйство Болгарии 57.5 KB
  Сельское хозяйство Болгарии Республика Болгария, государство в Восточной Европе. Болгария расположена в восточной части Балканского полуострова. Граничит на севере с Румынией - вдоль Дуная, на юге - с Грецией и Турцией, на западе...
5528. Процесс учета вложений в во внеоборотные активы действующей организации на примере ООО Металлострой 156 KB
  В настоящее время основной и важной задачей Российского Правительства и всех властных структур является развитие экономики нашей страны и, прежде всего производства. А согласно мнению многих специалистов для этого необходимы долгосрочные...
5529. Поверочный тепловой расчёт парового котла 1.65 MB
  Описание котла. Схема компоновки поверхностей нагрева Проектирование котельной установки электростанции предполагает выполнение теплового, гидродинамического и прочностного расчётов котла, аэродинамического расчёта газовоздушного тракта с выбор...
5530. Проектирование гибридной интегральной микросхемы 337 KB
  Реализация принципов, идей, методов полупроводниковой микроэлектроники привела к созданию БИС и СБИС, представляющие собой целые устройства и даже системы, размещенные в одном полупроводниковом кристалле. Однако не все устройства можно изго...