C ++ 2,4 const constante de qualification Pointer - const haut, pointeur constant - const fond


const sont des constantes

par exemple.
const int con = 1024;la définition d'une constante int
valeur de la variable con inchangeable

Affectez une fonction

const int con = func();

Les variables continues déclarées

Lorsque des variables continues de déclaration const, sont valables

const int con1=1, con2=2, con3=3;

CON1, CON2, con3 sont des constantes


référence const et le type const &

Le point de référence constante à la constante elle - même doit aussi être une constante.
La variable de référence ne peut pas être modifié.

const int con1 = 1024;
const int &con2 = con1; //对常量的引用,简称常量引用,也必须是一个常量
const int &con3 = 1024; //常量引用,可以赋上一个字面值。而非常量引用是不行的
int cVal = 1;
const int &con4 = cVal; //常量引用,可以赋值一个非常量的变量

Remarque, CON4, est attribué sur une grande valeur. CON4 lui-même ne peut pas être changé, mais les points à l'ampleur même est variable. Modifiez les valeurs mêmes:

cVal = 197;
cout << con4 << endl;   

sorties 197

Le point de référence constante à la constante lui - même doit également être une constante
de référence const constante, l'ampleur du changement est très, les valeurs de référence sont modifiés
non par lui - même pour changer la valeur des points


pointeur const

pointeur Const: Type const *

pointeur constante, est essentiellement un pointeur. définit la Déclaration: const première constante de caractère, suivi par le type de pointeur.
Désignant un pointeur constant lui - même doit être une constante.
Cependant, la variable de pointeur lui - même peut être réaffecté.

const int con1 = 1024;
const int *con2 = &con1; //指向常量的指针
int cVal = 1;
const int *con3 = &cVal;  //指向非常量的指针

int cVal2 = 197;
con2 = con3 = &cVal2;
cout << *con2 << endl;
cout << *con3 << endl;

Comme décrit ci - dessus, la forme d'une const type *définition variable, si un point est constant, le montant est. Peut - être pointant vers l' adresse désignée re.
Changement du point à la valeur d' origine par les solutions de pointeur de symbole de référence, il n'est pas acceptable.*con3 = 200;//error

constantes de pointeur: * Type const

constante de pointeur. Il est essentiellement une constante qui est un type de pointeur. Déclaration définit: un premier type de pointeur, suivi du caractère constant const.
Lorsque vous définissez doit être initialisé. Parce que le pointeur est une constante, il ne peut donc être réaffecté, il pointera toujours à la valeur initiale de l'adresse.

int con1 = 1024;
int *const con2 = &con1; //常量指针
int cVal = 1;
*con2 = 10;
con2 = &cVal;  //error

Au-dessus, l'adresse CON2 ne peut pas être changé, mais la valeur du point d'adresse est variable.

pointeur Immuable lui-même, et ne variable valeur du point d'adresse non: Type const * const

Complète deux définitions ci-dessus,

int con1 = 1024;
const int *const con2 = &con1;
int cVal = 1;
*con2 = 10; //error
con2 = &cVal; //error

adresse ci-dessus, CON2 ne peut être modifiée, et ne variable valeur du point d'adresse non.


Haut et en bas const const

Haut const (haut niveau const) représente lui - même est une constante
const sous - jacente (bas niveau const) représenté par des points est une constante
parlant populaire,
haut const, à savoir (pointeur ou une référence ou un autre type) variable elle - même ne change pas;
fond const , à savoir, (ou tout autre type de pointeur ou de référence) la valeur de la variable pointe objet immuable.

Pour les pointeurs qui:
couche supérieure de type est const *;
const * est le type sous - jacent.
Une référence à ce:
const du type et est sous - jacent. (Cette disposition, donc je suis très surpris. Il est évident que vous pouvez pointer à la constante et des variables de référence non constante, et par constants, le changement ne lui - même, ne peut pas changer la valeur des références d'objet ne peut dire que c'est un mort spécifié)

Seule la couche supérieure est le fond const:

const int *const ccp = &cv;//左边是 low const,右边是 top const;

cpp11: expression constante constexpr

cpp11 Ajouter des mots - clés constexprpeuvent être utilisés pour déclarer des constantes, fonctions et constantes.

constexpr int rv() {
    return 100;
}
constexpr int xd = 88;
constexpr int xxd = rv();

Le compilateur lors de la vérification de compilation, les définitions constantes sont corrects.
Étant donné que la valeur constante à déterminer au cours de la compilation, il est disponible pour les types non-base d'expressions constantes. Comme un type de pointeur ne suffit pas

Publié 400 articles originaux · louange 364 won · Vues 1,62 millions +

Je suppose que tu aimes

Origine blog.csdn.net/jjwwmlp456/article/details/89608121
conseillé
Classement