Correction de const
const documente l’absence de modification et permet au compilateur de refuser une écriture accidentelle.
Qu’est-ce que Correction de const ?
const documente l’absence de modification et permet au compilateur de refuser une écriture accidentelle.
Exprimez précisément données en lecture seule et pointeurs modifiables.
Points importants
- Un pointeur doit viser un objet vivant compatible ou être null.
- Chaque allocation possédée doit être libérée exactement une fois.
- Exprimez clairement ownership et const.
Exemples de code C et 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
Comparaison entre C et C++
Un pointeur vers const protège la valeur ; un pointeur const ne peut changer d’adresse. C++ ajoute les méthodes membres const.
C
Ownership et nettoyage sont des conventions gérées manuellement.
C++
Les conteneurs et RAII encodent ownership et nettoyage dans la durée de vie.
Exercices pratiques
Exécutez les deux versions puis modifiez-les pour observer leurs garanties.
- Testez null et les échecs d’allocation.
- Utilisez AddressSanitizer et UndefinedBehaviorSanitizer.
- Documentez l’ownership de chaque pointeur.