81 votes

const int = int const ?

Par exemple, est

int const x = 3;

code valide ?

Si oui, cela signifie-t-il la même chose que

const int x = 3;

?

148voto

Brian R. Bondy Points 141769

Ils sont tous les deux du code valide et ils sont tous les deux équivalents. Pour un type de pointeur bien qu'ils soient tous les deux du code valide mais pas équivalent.

Déclare 2 ints qui sont constants :

int const x1 = 3;
const int x2 = 3;

Déclare un pointeur dont les données ne peuvent pas être modifiées par le pointeur :

const int *p = &someInt;

Déclare un pointeur qui ne peut pas être modifié pour pointer vers autre chose :

int * const p = &someInt;

20voto

Archie Points 1679

Oui, c'est exactement la même chose. Cependant, il y a une différence de pointeurs. Je veux dire :

int a;

// these two are the same: pointed value mustn't be changed
// i.e. pointer to const value
const int * p1 = &a;
int const * p2 = &a;

// something else -- pointed value may be modified, but pointer cannot point
// anywhere else i.e. const pointer to value
int * const p3 = &a;

// ...and combination of the two above
// i.e. const pointer to const value
const int * const p4 = &a;

15voto

Yuan Points 1071

Extrait de l'élément « Effectif C++ » 21

char *p              = "data"; //non-const pointer, non-const data
const char *p        = "data"; //non-const pointer, const data
char * const p       = "data"; //const pointer, non-const data
const char * const p = "data"; //const pointer, const data

4voto

ttchong Points 204

C'est la même chose dans le sens et la validité.

Pour autant que je sache, const ne devient complexe que lorsqu'il s'agit d'un pointeur.

int const * x;
int * const x; 

sont différents.

int const * x;
const int * x; 

sont les mêmes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X