Carregando
0x80Lição 9 de 9

Leia templates e código genérico

Entenda como os templates permitem que funções e contêineres trabalhem com muitos tipos.

16 min Questionário com 5 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • Reconhecer templates de função, a dedução de tipos e os requisitos de tempo de compilação.

Os templates descrevem código parametrizado por tipos ou por valores. O compilador instancia um template para os tipos usados por um programa. Os templates de função podem deduzir os parâmetros de template a partir dos argumentos, enquanto templates de classe como std::vector<T> recebem um parâmetro de tipo. Os templates são verificados quando instanciados, então os diagnósticos podem ser longos; leia o primeiro erro relevante perto do código que usa o template.

main.cpp · C++20
1#include <iostream>
2
3template <typename T>
4T larger(T left, T right) {
5    return left < right ? right : left;
6}
7
8int main() {
9    std::cout << larger(4, 9) << "\n";
10}
Saída
9

Aqui, os dois argumentos deduzem T como int. Uma chamada como larger(4, 9.5) pode falhar na dedução, porque os argumentos sugerem tipos diferentes; converta de propósito ou projete um template que aceite tipos distintos quando isso fizer sentido.

Principais conclusões

  • Os templates são compilados para os tipos usados pelo programa.

  • A dedução de tipos pode reduzir a repetição, preservando as verificações estáticas.

  • Diagnostique os erros de template a partir da primeira mensagem relevante e do ponto de instanciação.

Quiz da aula

5 perguntas · aprovação com 4 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: escreva código em C++

Escreva C++20 no editor e execute com entradas de exemplo. O GCC 14 compila o código pelo Compiler Explorer, um serviço público gratuito; seu código-fonte e a entrada de teste são enviados para lá.

Exercício 1

Escreva uma função genérica de maior valor

+25 XP

Complete o template de função para que ele devolva o maior de dois valores do mesmo tipo. Leia dois inteiros e imprima o resultado.

  • O valor da direita é maior
  • O valor da esquerda é maior
main.c
Carregando editor…

Seu código é compilado como C++20 com gcc 14 (-Wall -Wextra) e executado no Compiler Explorer (godbolt.org), um serviço público gratuito.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…