Définition
intrate=80;int&pt=rate;
⒈ptestunevariablederéférence,elledoitêtreinitialiséelorsdeladéclarationdelavariablederéférence.LavaleurdeptetdetauxPointesurlamêmevariablemémoire.L'utilisationlaplusutiledelaréférenceestunparamètredefonction(structureetobjet).
⒉LescaractèresderéférencesontplusprochesPourunpointeur deconst,une foisassociéàunevariable,illuiseratoujoursfidélisé.
intother=30;pt=autre;
A ce moment, la valeur du taux et la valeur de p ont été modifiées à 30, mais la coiffe est toujours la coiffe du taux d'origine.
Sileprogrammenevoulepasmodifierlesinformations qui lui sont transmises,mais
inttest(const&p)//Lorsque vous modifiez la valeur de p, le compilateur générera un message d'erreur
⒋Si le paramètre réel Ifit ne correspond pas aux paramètres de l'application, C++ générera des variables temporaires à cet effet. Ceci n'est autorisé que lorsque les paramètres sont des références de construction.
****Lorsqueleparamètren'estpasuneréférence,s'iln'estpasunevaleur(etnepeutgénérerunevariabletemporaire),celaprovoqueuneerreurdecompilation*****(accentueletroisièmepoint,c'est-à-dire,essayezd'utiliserconst)
Le type du paramètre réel est correct, mais n'est pas une valeur
.Letypeduparamètreréelestincorrect,maisilpeutêtreconvertiautypecorrect
Leconceptdeflvaleur :saufpourlesconstanteslittéralesetlesexpressionscontenantdespolynômesL'objetdonnéesquelaformulepeutêtreréférencée
Essayez de déclarerlaréférenceretournéeparlafonctioncommeconstpourvouséviterdemodifier savaleur parlaréférenceretournée.Cetteréférenceretourestenfaitl'aliasdelavariableréférencée.
constsysop&use(sysop&pref)sysoppref=();sysoptest=use(pref);
équivalent à
user(pref);test=pref;
⒍Lacaractéristiquedefinhéritageestquelaréférencedelaclassedebasepeutpointerversl'objetclassedérivéesansconversionforcéedetype.
Si
int&ir=0
signifie quelacoiffeest0,pasuneréférenceC'est-à-dire qu'il existedesaffectationsvariablesdansladéclarationEncasdevaleur,lavariabledoitêtreutiliséecommeobjetréférencé,sinonlesystèmenepeut pas reconnaîtresivotredéclarationestuneréférenceouuneaffectation!
Mode d'emploi
Siint&ir=0, cela signifie que la coiffe est 0, pas une référence.
⑴&;Il ne s'agit pas du calcul de l'adresse, mais de l'identification.
L'identificateur de type fait référence au type de la variable cible.
(3)Lors de la déclaration de la référence, celle-ci doit être initialisée en même temps.
⑷Après que la citation soit déclarée, elle équivaut au nom de la variable cible a deux noms, à savoir le nom original de la cible et le nom cité, et le nom cité ne peut pas être utilisé comme alias pour d'autres noms de variable.
ra=1;estéquivalentàa=1;
⑸Déclareruneréférence,pasunenouvelledéfinitiond'unevariable,celasignifieseulementquelenomderéférenceestunaliasdunomdevariablecible,ce n'est pasuntypededonnéesen soi,donclaréférenceelle-mêmen'occupepasl'unitédestockage,etlesystèmen'attribuepasl'unitédestockageàlaréférence.
⑹Ilestpossibled'établiruneréférenceàuntableau.EnC++,lasolutionauproblèmederéductiondesprixmofantableestunparamètreformel'utilisationdelaréférenced'untableau
⑺Laréférenceàlaréférencenepeutpasêtreétablie,etlepointeuràlaréférencenepeutpasêtreétabli.
Par exemple:
intn;
int&&r=n;//erreur,lesystèmedecompilationconsidére"int&"asone,Regard"&r"commeglobalement,c'est-à-dire qu'uneréférenceestétablie,etl'objetréférencédoitêtrevariabled'uncertaintypededonnées
int&*p=n;//erreur,systèmedecompilationConcernant"int&"entièrement,et"*p"entièrement,c'est-à-dire,unpointeurd'uneréférenceestétabli.Lepointeurnepeutpointersurunevariabled'uncertaintypededonnées.
Il est intéressant de noter que vous pouvez créer des références de pointeur
Par exemple:
int*p;
int*&q=p;//Correct,lecompilateurmet"int*"Pensez à une seule,et"&q"commeune seule,c'est-à-dire,créez uneréférenceaupointerp,c'est-à-dire,donnezaupointeurpanaliasq.
Principesd'utilisation
Pour les fonctions passées par valeur sans modification :
. L'objet de données est petit et est passé par valeur
.Si l'objet de données est un tableau, définissez un pointeur de const
.Sil'objetdedonnéesestunestructureplusgrande,vouspouvezutiliserunpointeurdeconsisteouuneréférencedeconsiste,
.S'il s'agit d'un objet de classe, puis d'une référence d'utilisation.
Pour les fonctions qui modifient la valeur
.S'il s'agit de données intégrées, utilisez des pointeurs
.Arrays, vous ne pouvez utiliser que des pointeurs
.Structureusingpointeurouréférence
.Object.Usereference