Sintaxe Básica de Templates em C++
Deslize para mostrar o menu
Criar um template é, na verdade, bastante simples, sendo uma das partes mais fáceis de utilizá-los. Para começar, é necessário criar uma função ou uma classe. Vamos começar pela função.
main.cpp
123456void MyFirstTemplate() { } int main() { MyFirstTemplate(); }
Como pode ser visto, há uma função muito simples que, por enquanto, não faz nada. Ela pode ser facilmente chamada dentro da função main. Agora, sua tarefa é transformá-la em um template.
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() { }
Agora, vamos fazer com que execute alguma ação, como exibir uma mensagem. Utilize a função dentro da função main para ver o resultado em execução.
main.cpp
123456789101112#include <iostream> template<typename Name> void MyFirstTemplate() { std::cout << "c<>definity" << std::endl; } int main() { MyFirstTemplate(); }
Como você pode ver, ocorre um erro ao tentar chamá-la como se fosse uma função comum. Isso acontece porque não é mais apenas uma função simples. Neste ponto, o parâmetro de template especificado entre os sinais de menor e maior após a palavra-chave template torna-se essencial.
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 }
Não importa qual tipo você especifique neste exemplo, então você pode trocar void por qualquer tipo desejado. No entanto, especificar o tipo é obrigatório.
Para o template de função MyFirstTemplate, não é necessário especificar um nome para o parâmetro de tipo. Você pode remover Name, e tudo continuará funcionando porque o parâmetro de tipo não é utilizado dentro da função.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo