Базовий синтаксис шаблонів у C++
Свайпніть щоб показати меню
Створення шаблону насправді досить просте, і це одна з найлегших частин їх використання. Для початку потрібно створити або функцію, або клас. Ми почнемо з функції.
main.cpp
123456void MyFirstTemplate() { } int main() { MyFirstTemplate(); }
Як бачите, це дуже проста функція, яка наразі нічого не робить. Її можна легко викликати всередині функції main. Ваше завдання зараз — перетворити її на шаблон.
template.h
123456789101112// To create a template, you need to add code above the function or class // Start with the keyword `template` to indicate you're defining a template // template // Add angle brackets `<>`, this is list of the parameters for template // template < > // Inside of it has to be keyword `typename` and the name of it // template <typename Name> template <typename Name> void MyFirstTemplate() { }
Тепер додамо функціональність, наприклад, виведення повідомлення. Викличте її у функції main, щоб побачити результат у дії.
main.cpp
123456789101112#include <iostream> template<typename Name> void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { MyFirstTemplate(); }
Як видно, виникає помилка, якщо спробувати викликати її як звичайну функцію. Це відбувається тому, що це вже не просто звичайна функція. На цьому етапі параметр шаблону, вказаний у кутових дужках після ключового слова template, стає обов'язковим.
main.cpp
12345678910111213#include <iostream> // This essentioally creates an alias for a type you will use template<typename Name> // In this case the name of the type is Name void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { // In order to call the template function properly // You need to specify any type inside the brackets MyFirstTemplate<void>(); // This tells the template to use void as the type for Name }
У цьому прикладі не має значення, який тип ви вкажете, тому можна змінити void на будь-який бажаний тип. Однак вказання типу є обов'язковим.
Для шаблону функції MyFirstTemplate не обов'язково вказувати ім'я параметра типу. Ви можете видалити Name, і все одно все працюватиме, оскільки параметр типу не використовується всередині функції.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат