Templates com Parâmetros de Tipo Padrão
Deslize para mostrar o menu
É possível especificar um tipo de parâmetro padrão para um template de classe e, a partir do C++11, argumentos de template padrão também podem ser usados em templates de função. Para definir um tipo padrão, basta escrever o tipo desejado após o sinal de igual para o parâmetro do template.
main.cpp
123456789101112131415#include <iostream> template <typename T = int> // `int` will be used as a default type class Box { T value; // Stores the value of type `T` public: Box(T value) : value(value) { std::cout << this->value; } }; int main() { // Type not specified // VV Box<> intBox(25.5); }
Ao executar o código acima, a saída será 25 em vez de 25.5. Isso ocorre porque o tipo padrão para a classe Box está definido como int, o que trunca a parte decimal do valor.
Semelhante aos argumentos padrão de funções, se um parâmetro de template possui um argumento padrão, então todos os parâmetros de template seguintes também devem ter argumentos padrão.
Além dos parâmetros de tipo padrão, o C++ permite parâmetros de template não tipados com valores padrão. Parâmetros não tipados podem ser tipos integrais, ponteiros ou referências. Para especificar um parâmetro não tipado padrão, basta atribuir um valor padrão após o parâmetro.
array.h
123456// `int` and `10` are default parameters template <typename T = int, size_t Size = 10> struct Array { T arr[Size]; // Array with a fixed size of `Size` }
Parâmetros padrão de template simplificam o código, reduzem a redundância e permitem que templates lidem com casos de uso típicos com esforço mínimo, possibilitando personalização quando necessário.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo