*   >> Lezen Onderwijs artikelen >> science >> programming

Pointer naar Lid Exploitanten in C ++

C ++ Operators - Deel 7 Inleiding Dit is deel 7 van mijn serie, C ++ Operators. In dit deel van de reeks, bekijken we zogenaamde pointer naar lid operators. Er zijn twee pointer-to-lid operators. Ik zal niet alleen de pointer-to-lid operators in dit artikel uit te leggen; Ik zal andere dingen die gaan met het dat je niet vertrouwd bent met misschien verklaren. Opmerking: Als u de code niet kunt zien of als u denkt dat er iets ontbreekt (gebroken link afbeelding afwezig), neem dan contact met mij op [email protected].

Dat wil contact met mij op voor het geringste probleem dat je hebt over wat je aan het lezen bent. Voorwaarde U moet vóór het lezen van dit hebt gelezen van deze blog, de artikelen, "C ++ Pointers", "C ++ naamruimten Basics" en "Aanwijzingen om klassen in C ++" of soortgelijke voorwerpen. Deze drie artikelen behoren twee series Ik heb in de vorige delen van deze serie genoemd. Bindend Stel je voor dat je twee klassen, A en B, en klasse A is een eigenschap (object) van de klasse B. Je instantiëren een object van B. Dan moet je het object eigendom van B, die van klasse A.

U kunt dan wijzigen binden deze eigenschap van B om het object van B, zodat de effecten zal worden gezien in een ingekaderde doel van A. We zullen voorbeelden hieronder. De binaire operator. * Laten we eens kijken naar een voorbeeld dat. * Operator gebruikt. De operator bestaat uit de punt gevolgd door het sterretje. Beschouw de volgende code: #include using namespace std; klasse A {public: int Propa; }; klasse B {public: Een propB; }; A B :: * propBPtr = & B :: propB; int main () {B b; b.propB.propA = 9; A a = b * propBPtr.; cout 0 terug; } Twee klassen A en B zijn beschreven.

Class A heeft een eigenschap, Propa, dat van type int. Klasse B heeft een eigenschap, propB, dat is van de klasse A type. propB is een instantie van de klasse A. Na de klasse B beschrijving in de code, heb je de verklaring, AB :: * propBPtr = & B :: propB; Deze verklaring is een initialisatie verklaring. De aanwijzer naar lid operator werkt met een pointer naar propB klasse B. Dit is een bijzonder pointer, omdat het een pointer naar de eigenschap in de klassenbeschrijving en niet een ingekaderde object van de klasse.

Merk op dat het onroerend goed in de klasse B hebben we het hier over hebben is van het type A. De beschrijving van de klasse is vergelijkbaar met een namespace beschrijving. :) Net zoals je het nodig hebt om toegang te krijgen tot een identificatie in een namespace beschrijving: zo toegang tot een eigenschap van een klasse, de scope operator (nodig. Laten we nu kijken naar de initialisatie verklaring: Aan de rechterkant van de eenvoudige opdracht operator u een verwijzing (& B :: propB) naar het onroerend goed in de klasse B beschrijving, die is van het type A.

Let op het gebruik van de reikwijdte exploitant er. Aan de linkerkant heb je de aanwijzer verklaring van deze eigenschap, die in klasse B beschrijving en de aanwijzer wijst naar een eigenschap van het type A. Dus de aanwijzer verklaring begint met A, dan B klasse B, de reikwijdte operator, dan wijzer sterretje en de wijzer; u kunt geven welke naam je wilt voor de aanwijzer. Deze verklaring is een speciale pointer initialisatie. Laten we nu eens kijken naar wat er in de belangrijkste functie. In de belangrijkste een object van B, de zogenaamde b, wordt geconcretiseerd.

Het pand, propB van het object b wordt dan geopend. Deze eigenschap is van het type A. Het doel van deze toegang is tot een waarde te geven aan de eigenschap int van het onroerend goed in b. Zo is Propa van het object, propB van het object b daadwerkelijk toegankelijk. Dus je begint met b, dan een punt, dan propB, dan een punt en dan Propa. Nou, dan moet de toewijzing van een int, die in dit geval is 9. Het volgende statement maakt gebruik van de pointer-to-lid operator. Het bindt propB met behulp van de aanwijzer naar het onroerend goed in de klasse B beschrijving.

De wijzer is de tweede operand van het. * Operator en het object b is de eerste operand van de operator. Het resultaat (of return waarde) van deze binding is een object van het type A. Het resultaat wordt toegewezen (gekopieerd) naar een geïnstantieerd object van het type A in de code; Dit doel wordt genoemd, een Hier zijn citaten uit de C ++ specificatie over de bindende operator, (. *). "De binaire operator. * Bindt de tweede operand, welke van het type is" pointer naar lid van T "(waarin T een volledig gedefinieerde klasse type) zijn eerste operand die van klasse T.

bedraagt ​​Het resultaat is een Doel van het type gespecificeerd door de tweede operand. ". Nu is de volgende verklaring geeft de waarde van het onroerend goed van een int. Deze waarde is 9, die werd toegewezen aan de eigenschap int van het object van het type A, dat eigendom is van de klasse B-omschrijving. Door binding, de nieuwe geconcretiseerde object, een, de waarde van de eigenschap. De binaire operator -> * Deze operator begint met de -> symbool gevolgd door *.

Het doel van deze pointer-naar-operator lid is dezelfde als die van de vorige operator, maar de eerste operand een wijzer naar het object en b niet de identificator b object. De volgende code laat zien hoe het te gebruiken: #include using namespace std; klasse A {public: int Propa; }; klasse B {public: Een propB; }; A B :: * propBPtr = & B :: propB; int main () {B * bPtr; bPtr-> propB.

propA = 9; A a = bPtr -> * propBPtr; cout 0 terug; } In de bovenstaande code, de verklaring voor de aanwijzer-to-lid operator is, A a = bPtr -> * propBPtr; De aanwijzer-to-lid operators werken van links naar rechts. Je hebt twee van hen, die * en -.>

Page   <<       [1] [2] [3] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.