const ET CONST-CORRECTNESS

Salut ce forum apprends les bases du c++

Moderator: Rick

Post Reply
Hydraxx
Site Admin
Posts: 114
Joined: Mon Jan 12, 2026 4:04 pm
Location: France
Contact:

const ET CONST-CORRECTNESS

Post by Hydraxx »

const ET CONST-CORRECTNESS

À QUOI ÇA SERT ?

const permet de dire au compilateur :

"Cette donnée ne doit pas être modifiée par cette interface."

Cela rend le contrat d’une fonction ou d’un objet beaucoup plus clair.


1. VARIABLE const

Code: Select all

const int x{42};
Puis :

Code: Select all

x = 100;
est interdit.


2. POINTEUR VERS OBJET const

Code: Select all

const int* ptr{&x};
Tu peux changer ptr :

Code: Select all

ptr = &other;
Mais pas :

Code: Select all

*ptr = 10;
Le pointeur est modifiable.

L’objet vu à travers lui ne l’est pas.


3. POINTEUR const

Code: Select all

int* const ptr{&x};
Ici :

L’adresse dans ptr ne peut plus changer.

Mais :

Code: Select all

*ptr = 10;
reste autorisé si x lui-même est modifiable.


4. LES DEUX

Code: Select all

const int* const ptr{&x};
Le pointeur ne peut pas changer.

L’objet ne peut pas être modifié via ce pointeur.


5. ASTUCE DE LECTURE

Code: Select all

const int* ptr
ptr = pointeur vers int const.

Code: Select all

int* const ptr
ptr = pointeur const vers int.


6. PARAMÈTRE PAR RÉFÉRENCE const

Code: Select all

void print(const std::string& text)
{
}
Pourquoi ?

Si tu passes par valeur :

Code: Select all

void print(std::string text)
tu crées potentiellement une copie.

Avec :

Code: Select all

const std::string&
tu :
  • évites la copie ;
  • interdis la modification ;
  • acceptes un objet existant.

7. MÉTHODE const

Code: Select all

class Counter
{
public:
    int value() const
    {
        return value_;
    }

private:
    int value_{};
};
Le const après les parenthèses signifie :

"Cette méthode ne modifie pas l’état observable de l’objet."


8. POURQUOI C’EST IMPORTANT


Une API bien const-correct permet au compilateur de t’aider.

Exemple :

Code: Select all

void dump(const Buffer& buffer);
Tu sais immédiatement que dump n’est pas censée modifier buffer.

C’est une documentation intégrée au système de types.


À RETENIR


const ne sert pas seulement à empêcher une écriture.

Il exprime l’intention.

En code système, cela aide énormément à comprendre :
  • qui peut modifier une structure ;
  • quel buffer est en lecture seule ;
  • quel pointeur change ou non.

Return to “Bases du C++”

Who is online

Users browsing this forum: No registered users and 0 guests