Overview
Свайпніть щоб показати меню
Шаблони дозволяють розробникам створювати універсальний та багаторазово використовуваний код, що суттєво підвищує гнучкість і підтримуваність програм. У цьому огляді підсумовано основні поняття та розділи, розглянуті в курсі.
Створення шаблонів
Синтаксис створення шаблону містить ключове слово template, після якого йдуть параметри шаблону в кутових дужках. Нижче наведено приклад базової шаблонної функції, яка не приймає жодних параметрів.
template.h
12template<typename> void SimpleTemplate() {}
Шаблони та параметри
Шаблони також можуть приймати параметри, що робить їх більш універсальними. Тут показано, як створити шаблон функції, яка приймає один параметр узагальненого типу T. Це дозволяє функції працювати з будь-яким типом даних, вказаним під час створення екземпляра.
single_parameter.h
multiple_parameters.h
12template<typename T> void SimpleTemplate(T value) {}
Шаблони класів
Шаблони можуть застосовуватися і до класів, що дозволяє створювати визначення класів із параметрами. Наступний приклад ілюструє, як створити шаблон класу, який зберігає значення узагальненого типу T і містить конструктор для ініціалізації:
class_template.h
1234567template<typename T> class ClassTemplate { private: T value; public: ClassTemplate(T value) : value(value) {} };
Спеціалізація шаблонів
Спеціалізація шаблонів дозволяє створювати конкретні реалізації шаблону для певних типів даних. Це корисно, коли загальної реалізації недостатньо або потрібна особлива поведінка. Наступний приклад демонструє, як спеціалізувати шаблон функції для різних типів даних, включаючи int, bool та std::string:
specialization.h
1234567891011template <typename T> void Template(const T& value) { /* ... */ } // Any Type template <> void Template<int>(const T& value) { /* ... */ } // For `int` template <> void Template<bool>(const T& value) { /* ... */ } // For `bool` template <> void Template<std::string>(const T& value) { /* ... */ } // For `std::string`
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат