*   >> Læs Uddannelse artikler >> science >> programming

Pointer til medlemsstaterne Operatører i C ++

C ++ Operatører - Del 7 Introduktion Dette er en del 7 af min serie, C ++ Operatører. I denne del af serien, ser vi på det, der kaldes pointer-til-medlem operatører. Der er to pointer-til-medlem operatører. Jeg vil ikke forklare kun de pointer-til-medlem operatører i denne artikel; Jeg vil forklare andre ting, der går med det, at du ikke kan være bekendt med. Bemærk: Hvis du ikke kan se koden, eller hvis du tror noget mangler (brudt link, billede fraværende), bare kontakte mig på [email protected]. Det vil sige, kontakt mig for det mindste problem, du har om, hvad du læser.

Forudsætning Du skulle have læst fra denne blog, artiklerne, "C ++ Pointers", "C ++ Navnerum Basics" og "pointere til Klasser i C ++" eller lignende varer, før du læser denne. Disse tre artikler er blandt de to serier jeg har nævnt i de tidligere dele af denne serie. Bindende Forestil dig, at du har to klasser, A og B, og klasse A er en ejendom (objekt) i klasse B. Du instantiere et objekt fra B. Så du ændre ejendommen genstand for B, som er af klasse A. Du kan derefter binde denne egenskab af B til genstand for B, så at virkningerne vil blive set i en instantierede genstand for A.

Vi skal se eksempler nedenfor. Den binære operatør. * Lad os se på et eksempel, der bruger. * Operatøren. Operatøren består af dot efterfulgt af stjerne. Betragt følgende kode: # include bruge namespace std; klasse A {public: int PROPA; }; klasse B {public: En propB; }; A B :: * propBPtr = & B :: propB; int main () {B b; b.propB.propA = 9; A a = b * propBPtr.; cout returnere 0; } To klasser, er A og B er beskrevet. Klasse A har en egenskab, propa, som er af typen int. Klasse B har en egenskab, propB, som er af klassen A type. propB er en instantiering af klassen A.

Efter den klasse B-beskrivelsen i kode, har du erklæringen, AB :: * propBPtr = & B :: propB; Denne erklæring er en initialisering erklæring. Markøren-til-medlem operatør arbejder med en pegepind til propB i klassen B. Dette er en særlig pointer, fordi det er en pointer til ejendommen i klassen beskrivelse og ikke til et instantierede objekt fra klassen. Bemærk, at ejendommen i klassen B vi taler om her, er af type A. Klassen beskrivelsen ligner en beskrivelse namespace.

Så for at få adgang til en ejendom af en klasse, du har brug for rækkevidden operatør (: :) ligesom du har brug for det for at få adgang en identifikator i en beskrivelse namespace. Lad os nu se på initialiseringen erklæring: På højre side af den simple opgave operatør du har en reference (& B :: propB) til ejendommen i klasse B beskrivelse, der er af typen, A. Bemærk brugen af ​​anvendelsesområdet operatør der. Til venstre har du markøren erklæring af denne egenskab, der er i klasse B-beskrivelse og pointeren peger på en egenskab af type A.

Så markøren erklæring begynder med A, så B for klasse B, omfanget operatør, så pointer stjerne og markøren; du kan give hvad navn du ønsker for markøren. Denne erklæring er en særlig pointer initialisering. Lad os se på hvad der er i den vigtigste funktion. I vigtigste genstand for B, kaldet b, instantieres. Ejendommen er propB af objektet b derefter adgang til. Denne egenskab er af type A. Formålet med denne adgang er at give en værdi til den int ejendom af ejendommen i b. Så det er propa af objektet, propB af objektet b, der faktisk adgang.

Så du begynder med b, og derefter et punktum, så propB, så en prik og derefter PROPA. Nå, du så have tildelingen af ​​en int, som i dette tilfælde er 9. Den næste sætning bruger markøren-til-medlem operatør. Det binder propB bruge sin pegepind til ejendommen i klasse B-beskrivelsen. Markøren er den anden operand for. * Operatøren og objektet b er den første operand for operatøren. Resultatet (eller returværdi) af denne binding er et objekt af typen A.

Resultatet er tildelt (kopieres) til en instantieres objekt af typen A i koden; Dette formål kaldes en Her er citater fra C ++ specifikation om bindende operatør, (. *). "Den binære operatør. * Binder sin anden operand, der skal være af typen" pegepind til medlem af T "(hvor T er en helt defineret klasse type) til sin første operand, der skal være af klasse T. Resultatet er en objekt af typen angivet af anden operand. ". Men den næste sætning viser værdien af ​​int egenskab ved et. Denne værdi er 9, som blev tildelt til int ejendom objekt af typen A, som er ejet af klasse B beskrivelsen.

På grund af binding, det nye objekt instantierede, a, har værdien i dens ejendom. Den binære operatør -> * Denne operator begynder med -> symbol efterfulgt af *. Formålet med denne pointer-til-medlemsoperatoren er den samme som for den tidligere operatør, men dens første operand en pegepind til b objektet og ikke b objekt-id. Følgende kode viser, hvordan man bruger det: #include bruge namespace std; klasse A {public: int PROPA; }; klasse B {public: En propB; }; A B :: * propBPtr = & B :: propB; int main () {B * bPtr; bPtr-> propB.

propA = 9; A a = bPtr -> * propBPtr; cout returnere 0; } I ovenstående kode, opgørelsen for markøren-til-medlem operatør er, A a = bPtr -> * propBPtr; De pointer-til-medlem operatører operere fra venstre mod højre. Du har to af dem, som er * og -.>

Page   <<       [1] [2] [3] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.