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.