C++ moderno e alternativas em C

Templates e técnicas genéricas C

Templates geram implementações type-safe; C usa macros, void* ou C11 _Generic.

O que é Templates e técnicas genéricas C?

Templates geram implementações type-safe; C usa macros, void* ou C11 _Generic.

Escreva código independente de tipo em compile time.

Pontos importantes

  • Entenda primeiro o mecanismo em C.
  • Use RAII e semântica de valor para ownership.
  • Prefira abstrações type-safe a macros e casts.

Exemplos de código C e C++

C
Executar →
main.c
#include <stdio.h>

int max_int(int left, int right) {
    return left > right ? left : right;
}

double max_double(double left, double right) {
    return left > right ? left : right;
}

#define MAX(left, right) _Generic((left), \
    int: max_int, double: max_double)((left), (right))

int main(void) {
    printf("%d %.1f\n", MAX(3, 9), MAX(2.5, 7.0));
}
Saída esperada
9 7.0
C++
Executar →
main.cpp
#include <iostream>

template<class T>
T maximum(const T& left, const T& right) {
    return left > right ? left : right;
}

int main() {
    std::cout << maximum(3, 9) << ' '
              << maximum(2.5, 7.0) << '\n';
}
Saída esperada
9 7

Comparação entre C e C++

_Generic lista tipos suportados; template C++ funciona com qualquer tipo que forneça as operações.

C

C usa prefixos, callbacks, macros e contextos explícitos.

C++

O idioma fornece abstrações com escopo, type-safe e de baixo custo.

Exercícios práticos

Execute as duas versões e modifique-as para observar suas garantias.

  • Escreva primeiro o mecanismo em C.
  • Substitua cleanup manual por RAII.
  • Meça alocações e dispatch virtual.