Correção de const
const documenta o que não será modificado e bloqueia escritas acidentais.
O que é Correção de const?
const documenta o que não será modificado e bloqueia escritas acidentais.
Expresse dados somente leitura e ponteiros mutáveis.
Pontos importantes
- Todo ponteiro deve apontar para objeto vivo compatível ou ser null.
- Libere exatamente uma vez cada alocação própria.
- Expresse ownership e const claramente.
Exemplos de código C e C++
main.c
#include <stdio.h>
int sum(const int *values, size_t count) {
int total = 0;
for (size_t i = 0; i < count; ++i) total += values[i];
return total;
}
int main(void) {
const int values[] = {2, 4, 6};
printf("%d\n", sum(values, 3));
return 0;
}
12
C++
main.cpp
#include <array>
#include <iostream>
int sum(const std::array<int, 3>& values) {
int total = 0;
for (int value : values) total += value;
return total;
}
int main() {
const std::array values{2, 4, 6};
std::cout << sum(values) << '\n';
}
12
Comparação entre C e C++
Ponteiro para const protege o valor; ponteiro const não muda endereço. C++ acrescenta member functions const.
C
Ownership e limpeza são convenções manuais.
C++
Containers e RAII codificam ownership e limpeza no lifetime.
Exercícios práticos
Execute as duas versões e modifique-as para observar suas garantias.
- Teste null e falhas de alocação.
- Use AddressSanitizer e UndefinedBehaviorSanitizer.
- Documente o ownership de cada ponteiro.