Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
1
Добавлен:
24.09.2019
Размер:
522.24 Кб
Скачать

Вопрос 18) Обобщенные классы или шаблоны.

Шаблоны – Это описание функции с аргументом, тип которого подставляется в зависимости от типа переданного в этот шаблон. Использую шаблон компилятор создает функцию именно под тот тип с которым она была вызвана. Также шаблон можно применять и к классам. Это позволяет не перегружать функцию много раз а написать один раз функцию, которая будет работать со всеми стандартными типами данных.

Пример класса стек работающего с разными типами:

#include <iostream.h>

Const int MAX=50;

Template <class T> // объевляем что будет шаблон в котором в тип переменной T будет меняться, что позволит использовать данный класс для разных типов данных.

Class stack

{

Private:

T st[MAX]; // Создастся массив с указанным типом

Int top;

Public:

stack()

{

top = -1;

}

void push(T var) // Указываем что аргумент метода будет типа указанного при создании экземпляра класса

{

st[++top] = var;

}

T pop() // Возвращаемый тип будет типом указанного при создании класса

{

If(top >= -1)

cout<<”Stack is empty”;

Else

return st[top--];

}

}

int main()

{

stack<float> stf; // Создаем экземпляр сласса stack, который будет работать с типом float

stf.push(32,2);

stf.push(0.3);

cout<<stf.pop()<<” ”<<stf.pop();

stack<char> stc; // Создаем экземпляр сласса stack, который будет работать с типом char

stc.push(‘A’);

stc.push(‘B’);

cout<<stc.pop()<<” ”<<stc.pop();

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]