Comment utiliser le mot-clé const en C ++

UN aiguille est une variable qui “ n ° 148 points à; d'autres variables en C ++. Le mot-clé const signifie qu'une variable ne peut pas être changé une fois qu'il a été déclaré et initialisé.

const deux PI = 3.1415926535-

Les arguments des fonctions peuvent aussi être déclarées const, ce qui signifie que l'argument ne peut être modifié dans la fonction. Cependant, cela introduit une dichotomie intéressante dans le cas de variables de pointeur. Considérer la déclaration suivante:

const int * pInt-

Exactement ce qui est la constante ici? Que pouvez-vous pas changer? Est-ce la variable pInt ou l'entier pointée par pInt? Il se trouve que les deux sont possibles, mais cette déclaration déclare un pointeur variable à un emplacement de mémoire constante. Ainsi, ce qui suit:

const int * pInt- // déclarer un pointeur sur un const INTINT nVar-pInt = nVar- // cela est autorisé * pInt = 10 - // mais cela ne



Vous pouvez changer la valeur de pInt, par exemple, lui attribuant l'adresse de nVar. Mais la cession définitive dans l'exemple extrait génère une erreur de compilation puisque vous ne pouvez pas changer le const int pointé par pInt.

Que faire si vous aviez l'intention de créer une variable de pointeur avec une valeur constante? L'extrait suivant montre dans cette action:

int nVar-int * const cpInt = nVar- // déclarer une constante pointeur // à une variable entière * cpInt = 10 // maintenant, ce qui est légal ... cpInt ++ - // ... mais cela ne

La variable cpInt est un pointeur constant à une variable int. Le programmeur ne peut pas changer la valeur du pointeur, mais elle peut changer la valeur de l'entier pointé.

La const-Ness peut être ajouté via une cession ou d'initialisation, mais ne peut pas être (facilement) rejettera. Ainsi, ce qui suit:

int nVar = 10 int pVar = nVar-const int * pcVar = pVar- // ceci est legalint * pVar2 = pcVar - // ceci est pas

La tâche pcVar = pVar- est correct - ce ajoute le const restriction. L'affectation définitive dans l'extrait est pas autorisé, car il tente de supprimer le const-ness de restriction pcVar.

Une variable peut être implicitement refonte dans le cadre d'un appel de fonction, comme dans l'exemple suivant:

fn vides (const int nVar) -void mainFn () {int n-fn (10) - // appelle fn (const int) fn (n) - // appelle la même fonction en traitant n} // comme si elle était const

La déclaration fn (const int) dit que la fonction fn () ne modifie pas la valeur de son argument. Cela est important lors du passage d'une référence à la constante 10. Il n'a pas d'importance lors du passage d'une référence à la variable n, mais il ne fait pas mal rien non plus.

Finalement, const peut être utilisé comme un discriminateur entre les fonctions d'un même nom:

fn vides (const int nVar) fn -void (int nVar) -void mainFn () {int n-fn (10) - // appelle la première functionfn (n) - // appelle la deuxième fonction}

» » » » Comment utiliser le mot-clé const en C ++