Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Шаблоны классов

Шаблон класу – схема побудови інших класів на основі цього шаблону.Шаблони дають змогу створити один опис класу, який можна використовувати для роботи з різними типами даних(vector, list…).Шаблони значно скорочують код програми, тому що достатньо написати один
Шаблони класів Шаблон класу – схема побудови інших класів на основі цього шаблону.Шаблони дають Синтаксис оголошення шаблонного класуОголошення шаблону починається зі слова template, яке вказує компілятору Приклад шаблонного стекуtempalte class Stack {  private:    enum Реалізація методів шаблонного класуМетоди шаблонного класу стають шаблонними методами. Можуть бути як Приклад реалізаціїtemplate Stack::IsEmpty() {  return top == 0;}template bool Stack::IsFull() { Параметри за замовчуванням в шаблонахШаблонні класи можуть приймати параметри за замовчуванням (функції Спеціалізація шаблонівЯвна спеціалізація – це визначення конкретного типу, який має використовуватись замість Часткова спеціалізація шаблонів – використовується тоді, коли у шаблонному класі є декілька Рекурсивне використання шаблонівШаблон класу A, може виступати параметром для того ж класу Шаблони як члени класівШаблони можуть бути членами структури, класу чи іншого шаблону. Шаблони як параметриШаблони можуть мати параметри, які також є шаблонами. Це також Шаблонні класи і друзіШаблонні класи можуть мати друзів як і звичайні класи.Друзі Нешаблонні дружні функціїtemplate class HasFriend {    public:	// дружня фукнція Наслідування і шаблониШаблонні класи підтримують наслідування так само як і звичайні класи.
Слайды презентации

Слайд 2 Шаблон класу – схема побудови інших класів на

Шаблон класу – схема побудови інших класів на основі цього шаблону.Шаблони

основі цього шаблону.
Шаблони дають змогу створити один опис класу,

який можна використовувати для роботи з різними типами даних(vector, list…).
Шаблони значно скорочують код програми, тому що достатньо написати один шаблонний клас, який зможе працювати з різними типами даних.


Слайд 3 Синтаксис оголошення шаблонного класу
Оголошення шаблону починається зі слова

Синтаксис оголошення шаблонного класуОголошення шаблону починається зі слова template, яке вказує

template, яке вказує компілятору на те, що далі йде

оголошення шаблону.
Після template в < > вказуються шаблонні параметри
В даному випадку ключове слово class не означає те, що T1 обов’язково має бути класом, T1 може бути простим типом даних (int, char…)
Також замість слова клас можна використовувати слово typename
Template class A {…}
Після цього у описі класу можна використовувати T1, T2 так само як і звичайні типи даних.

Слайд 4 Приклад шаблонного стеку
tempalte
class Stack {

Приклад шаблонного стекуtempalte class Stack { private:  enum {MAX =

private:
enum {MAX = 10}

Type items[MAX];
int top;
public:
Stack();
bool IsEmpty();
bool IsFull();
bool Push(const Type& item); //передаємо дані типу T для занесення в стек
bool Pop(Type& item);
};

….
//використання шаблонного класу
Stack stack_int;
Stack stack_string;

Слайд 5 Реалізація методів шаблонного класу
Методи шаблонного класу стають шаблонними

Реалізація методів шаблонного класуМетоди шаблонного класу стають шаблонними методами. Можуть бути

методами.
Можуть бути як вбудованими (inline) так і реалізовані

за межами класу.
Синтаксис реалізації шаблонного методу:
Template classNmae::methodName(parameters).
Якщо метод реалізовується в класі, то синтаксис реалізації є таким самим як у методів звичайного класу.


Слайд 6 Приклад реалізації
template
Stack::IsEmpty() {
return top

Приклад реалізаціїtemplate Stack::IsEmpty() { return top == 0;}template bool Stack::IsFull() {

== 0;
}

template
bool Stack::IsFull() {
return top

== MAX;
}

template
bool Stack::push(const Type& item) {
if (top < MAX) {
items[top++] = item;
return true;
}
else {
return false;
}
}

template
bool Stack::pop(Type& item) {
if (top > 0) {
item = items[--top];
return true;
}
else {
return false;
}
}


Слайд 7 Параметри за замовчуванням в шаблонах
Шаблонні класи можуть приймати

Параметри за замовчуванням в шаблонахШаблонні класи можуть приймати параметри за замовчуванням

параметри за замовчуванням (функції з параметрами за замовчуванням).
Template

T1, class T2 = int> class A {…}
Якщо при створенні об’єкта класу А, другий параметр не буде вказаний, то компілятор буде підставляти замість T2 іnt.
A a1 //T1 = double, T2 = double
Aa2//T1 = double, T2 = int.





Слайд 8 Спеціалізація шаблонів
Явна спеціалізація – це визначення конкретного типу,

Спеціалізація шаблонівЯвна спеціалізація – це визначення конкретного типу, який має використовуватись

який має використовуватись замість загального шаблону.
Явна спеціалізація шаблону використовується

тоді, коли шаблонний клас має вести себе по-іншому для цього типу даних.
Синтаксис оголошення спеціалізованого шаблону:
Template<> class Ім’яКласу <Ім’я спеціалізованого типу>

Template class A {…} //загальний клас
Template<> class A {…} //спеціалізований клас.




Слайд 9 Часткова спеціалізація шаблонів – використовується тоді, коли у

Часткова спеціалізація шаблонів – використовується тоді, коли у шаблонному класі є

шаблонному класі є декілька типів-параметрів(T1, T2) і клас має

працювати по-іншому, якщо один з параметрів є деяким типом.
Приклад
template class A {…} //загальний шаблон
template class A {…}//часткова спеціалізація
Якщо у компілятора є вибір, то він приймає найбльш спеціалізований шаблон. Тобто якщо ви створюєте об’єкт класу з параметрами то клас буде генеруватись на основі загального шаблону, але якщо у вас другим параметром буде int, то буде використовувавитсь частково спеціалізований шаблон.

Слайд 10 Рекурсивне використання шаблонів
Шаблон класу A, може виступати параметром

Рекурсивне використання шаблонівШаблон класу A, може виступати параметром для того ж

для того ж класу А.
Приклад:
template

class Array//шаблон масиву розміром n.
Array a; // створення об’єкта типу Array. //Масив цілих чисел розміром 10.
Array, 10> b; //масив з 10 елементів, кожен з яких //є масивом з 5 елементів.


Слайд 11 Шаблони як члени класів
Шаблони можуть бути членами структури,

Шаблони як члени класівШаблони можуть бути членами структури, класу чи іншого

класу чи іншого шаблону. Ця властивість шаблонів часто використовується

в STL.
Приклад
template
class beta {
private:
template // область видимості класу hold – клас beta.
class hold {
private:
V val;
public:
hold(V v = 0) : val(v) {}
void show() const {cout << val << endl;}
V Value() const {return val;}
};
holdq; //об’єкти класу hold в класі beta.
hod n;
//...
}

Слайд 12 Шаблони як параметри
Шаблони можуть мати параметри, які також

Шаблони як параметриШаблони можуть мати параметри, які також є шаблонами. Це

є шаблонами. Це також використовується для реалізації бібліотеки STL.
Приклад
template