Similar presentations:
Семинар 1 - Шаблоны (2)
1.
ШаблоныСеминар 1
2.
Формула оцениванияИТОГ = 0,25*ПР1 + 0,1*СР + 0,25*ПР2 + 0,1*ДЗ + 0,1*ОК + 0,2*ЭКЗ
ПР1 — практические работы 1 модуля, 3 штуки.
СР — самостоятельная работа, 1 модуль, 1 штука.
ПР2 — практические работы 2 модуля, 4 штуки.
ДЗ — домашнее задание, 2 модуль, 1 штука.
ОК — оперативный контроль (выполнение заданий на семинарах)
ЭКЗ — экзамен
3.
Шаблоны функцийШаблоны позволяют задавать общую логику
для функций, работающих с разными типами.
template <typename T>
T function(T variable) {
return variable;
}
function<int>(a);
function(a);
Задание 1:
Написать шаблон функции, выполняющей
сложение двух аргументов. Проверить для
типов int, string, char.
4.
Слоты в Qtvoid MainWindow::on_pushButton_clicked()
{
ui->textBrowser->setText("Этот метод заменит текст");
ui->textBrowser->append("Этот метод добавит текст");
}
5.
Специализация. Перегрузка функцийПри необходимости можно определить отдельную реализацию для
определенных типов.
template <typename T1, typename T2>
T1 function(T1 variable1, T2 variable2) { /*...*/ }
char function(char variable1, char variable2) { /*...*/ }
Задание 2:
Перегрузить функцию из задания 1 для типа char.
6.
Шаблоны классовПо аналогии с функциями, можно создавать и шаблоны классов.
template <typename T1, typename T2>
class map{
public:
map(){/*...*/}
bool checkPair(T1 a, T2 b){/*...*/}
private:
T1* array1;
T2* array2;
};
Задание 3:
Написать шаблон класса,
хранящего два массива
разных типов и
проверяющий наличие пар
элементов в массивах. Пара –
два элемента с одинаковыми
индексами.
7.
Специализация шаблонов классовСпециализация классов может быть неполной – некоторые типы
остаются неопределенными.
template <typename T1, typename T2>
class myClass{/*...*/};
template <typename T1>
class myClass<T1, int> {/*...*/};
Задание 4:
Создать класс, хранящий пары число-строка.
Специализировать шаблон из задания три для
работы с данным классом.
programming