Hvordan bruke "Denne" Pointer i C ++
I et C ++ program, hvis du opprette objekt A i klasse X, kan du deretter få adressen til A ved å bruke "denne" pekeren. Adressen er tilgjengelig som en lokal variabel i den ikke-statiske medlemsfunksjoner til X, og dens type er konst X *. Den "dette" pekeren fungerer fordi C ++ skaper tilfeller av sine data medlemmer, og det holder en kopi av hvert medlem funksjon.
Bruksanvisning
1 Bruk "dette" pekeren å oppdage plasseringen av en klasse eksempel. Som enhver pekeren, lagrer det en adresse. Medlem funksjon getAddress () fra C ++ klasse X returnerer adressen til en gitt forekomst av klassen X:
klasse X {
offentlig:
X * const getAddress () const {
returnere dette;
};
2 Tilgangsmedlemsfunksjoner eller medlemsdata inne i en klasse medlem funksjonen med "dette" søkeord og "->" operator. Eksempelet nedenfor kan arbeide uten "dette->". Men hvis matrisen biblioteket har en forelder klasse med de samme medlemsnavnene, "dette->" gjør det klart at det som er påberopt tilhører den aktuelle klassen, og ikke moder:
klasse Matrix {
int rader, kolonner;
offentlig:
Matrix (): p (0), kolonner (0) {
dette-> Init ();
}
~ Matrix ();
int GetRows () const {
tilbake dette-> rader;
}
privat:
void Init ();
};
3 Studere en klasse som har operatør overbelastning og studere bruken av dette. Følgende kodebit viser hvordan det kan bli omdefinert:
konst X * dette-> operator () {
returnere dette;
}
Hint
- Hold disse reglene i bakhodet når du arbeider med en peker: Ikke prøv å endre adresser; de er unmodifiable; inkluderer ikke-adresser når størrelsen av et objekt blir beregnet; du får ikke tilgang til en adresse fra statiske medlemsfunksjoner.