Sobrecarga de funções em C++ e a alternativa em C
Nesta lição, você vai usar a sobrecarga de funções (function overloading) em C++ para que um mesmo nome de função trabalhe com vários tipos e comparar com a forma de fazer isso em C.
Introdução
A sobrecarga de funções (function overloading) permite várias funções com o mesmo nome, mas com tipos de parâmetros diferentes. Na chamada, o compilador C++ escolhe a versão certa pelo tipo dos argumentos. C não tem esse recurso, então cada função precisa de um nome próprio.
Pontos importantes
- Entenda como se faz em C antes de aprender as abstrações de C++.
- Use RAII e semântica de valor (value semantics) para expressar a posse dos recursos.
- Prefira as ferramentas com segurança de tipos de C++ a macros e conversões de tipo.
Exemplos de código C e 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;
}
int main(void) {
printf("%d %.1f\n", max_int(3, 8), max_double(4.5, 2.0));
}
8 4.5
#include <iostream>
int maximum(int left, int right) {
return left > right ? left : right;
}
double maximum(double left, double right) {
return left > right ? left : right;
}
int main() {
std::cout << maximum(3, 8) << ' '
<< maximum(4.5, 2.0) << '\n';
}
8 4.5
Comparação entre C e C++
Em C, as funções max_int e max_double precisam deixar o tipo explícito no nome. Em C++, as duas se chamam maximum, e o compilador escolhe a versão certa conforme o argumento seja int ou double. Essa escolha acontece na compilação, então não deixa o programa mais lento.
C usa convenções de nomes, callbacks, macros e structs com contexto.
C++ oferece abstrações com escopo claro, seguras quanto a tipos e que normalmente não custam nada a mais na execução.
Exercícios práticos
Execute as duas versões e depois mude o código para observar a diferença de segurança que cada linguagem oferece.
- Escreva primeiro o mecanismo em C e só depois use o recurso equivalente de C++.
- Troque a liberação manual de recursos por RAII.
- Verifique se o recurso causa alocações de memória ou chamadas de funções virtuais.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
Todos os desafios