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;

}


 

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

24438. Основные функции компиляторов 209 KB
  Система прерывания ОМЭВМ. Непосредственной причиной такого переключения процессора с одной программы на другую является сигнал прерывания причем характер новой программы которую процессор начинает выполнять в результате воздействия сигнала прерывания и которая называется программой обработки прерывания зависит от источника возникновения этого сигнала. В большинстве случаев возникновение сигналов прерывания не планируется в выполняемой текущей программе а является по отношению к ней независимым или внешним событием. В зависимости от...
24439. Отладчики программ 43.5 KB
  Turbo Debugger представляет собой набор инструментальных средств, позволяющий отлаживать программы на уровне исходного текста и предназначенный для программистов, использующих семейство компиляторов Borland.
24440. Методы оптимизации и «раскрутки» web-сайтов 26 KB
  Поисковая оптимизация 4. Оптимизация числа ключевых слов на странице Ключевые слова фразы должны встречаться в тексте как минимум34раза. Оптимизация плотности ключевых слов Плотность ключевого слова на странице показывает относительную частоту содержания слова в тексте. 4 Оптимизация расположения ключевых слов на странице Чем ближе ключевое слово или фраза к началу документа тем больший вес они получают в глазах поисковой системы.
24441. Преобразование Фурье и его основные свойства 157.5 KB
  Большинство ОМЭВМ представляет собой Гарвардскую архитектуру хранение программных кодов и данных происходит в раздельных областях памяти. Объем ОЗУ памяти даны меньше объема ПЗУ память программ. При выполнении прмы процессор осуществляет выбоку из памяти команд данных и запись результатов при этом он адресуется к ячейкам памяти по их номерам. Ячейки памяти имеют свой номер адрес памяти а совокупность адресов памяти состовляют адресное пространство.
24442. Преобразование Лапласа, Представление дискретной информации и способы ее отображения 93.5 KB
  Система команд однокристальной ЭВМ и способы адресации операндов Команда процессора код определяющий действие устройства при выполнении заданных операций фций. Способ адресации способ указания положения данных над которыми производятся операция адресация операндов либо способ определения точки перехода в командах передачи управления адресация переходов. При формировании команды один и тот же код операции может использоваться при различных способах адресации Пример на системе команд MCS51. Элементы в квадратных скобках могут...
24443. Параллельный и последовательный порты ЭВМ. Теорема Котельникова 279 KB
  Последовательный порт может работать в 4х режимах: В режиме 0 информация передается и принимается через ввод приемника RxD. В режиме 1 информация передается через выход передатчика TxD и принимается через вход приемника RxD В режиме 2 информация передается через выход передатTxD принимается через вход приемника RxD. Частота приема и передачи в режиме 2 задается программно и может быть равна fBQ 32 или fno 64. Режим 3 полностью идентичен режиму 2 за исключением параметров частоты приема и передачи которые в режиме 3 задаются Т С 1.
24444. Энтропия источника информации 179 KB
  Энтропия источника информации. Источник информации можно представить в виде случайной величины X принимающей одно из конечного числа возможных значений {1 2 ј m} с вероятностью pi pi вероятность того что X = i.Теорема Шеннона Если имеется источник информации с энтропией Нх и канал связи с пропускной способностью С то если С HX то всегда можно закодировать достаточно длинное сообщение таким образом что оно будет передано без задержек. Если же напротив С HX то передача информации без задержек невозможна.
24445. Технология сжатия информационных данных (Алгоритмы Шеннона-Фано, Хаффмана) 182 KB
  Выполнив выше сказанное для всех символов получим: C = 00 2 бита A = 0100 4 бита D = 0101 4 бита F = 011 3 бита B = 10 2 бита E = 11 2 бита Каждый символ изначально представлялся 8ю битами один байт и так как мы уменьшили число битов необходимых для представления каждого символа мы следовательно уменьшили размер выходного файла. Из этих комбинаций лишь 2 по длиннее равны 8 битам. Поэтому для дискретного управления в реальном масштабе времени наличие в системе команд операций...
24446. Цепи Маркова. Стационарное распределение вероятностей цепи Маркова 101.5 KB
  Марковские процессы это процессы которые в будущем и прошлом при фиксированном настоящем являются независимыми. Рассмотрим некоторый вероятностный процесс . Пространство X называют пространством состояний а его элементы называются состоянием процесса. Считаем что пространство состояний X состоит из неотрицательных целых чисел из этого следует что процесс дискретный.