C ++ Toimijat - Osa 7 Johdanto Tämä on osa 7 minun sarja, C ++ Operaattorit. Tässä osa sarjasta, katsomme mitä kutsutaan osoitin-to-toimijaa. On kaksi osoitin-to-toimijaa. En aio selittää vain osoitin-to-toimijaa, tässä artikkelissa; Selitän muita asioita, jotka menevät sen kanssa, että et voi tuntea. Huomautus: Jos et näe koodia tai jos luulet jotain puuttuu (rikki linkki, kuva poissa), vain yhteyttä minuun [email protected]. Eli minuun yhteyttä pienintäkään ongelmaa olet mitä luet.
Edellytys Sinun olisi pitänyt lukea tätä blogia, artikkeleita, "C ++ Pointers", "C ++ Nimiavaruudet perusteet" ja "Osoittimet luokkiin C ++" tai vastaavat tuotteet ennen luet tätä yksi. Nämä kolme artikkelia ovat kaksi sarjaa olen maininnut edellisessä osassa tämän sarjan. Sitova Kuvittele, että sinulla on kaksi luokkaa, ja B, ja luokka on ominaisuus (kohde) luokan B. instantiate objekti B. Sitten muokata omaisuutta kohde B, joka on A-luokan Voit sitten sitoa tämä ominaisuus B kohde B siten, että vaikutukset nähdään instantiated kohde A. Katsotaan esimerkkejä alla. Binary operaattori.
* Katsokaamme esimerkki, joka käyttää. * Operaattori. Operaattori koostuu pisteen jälkeen tähti. Harkitse seuraava koodi: # include using namespace std; luokka {julkinen: int propa; }; B {julkinen: propB; }; B :: * propBPtr = & B :: propB; int main () {B b; b.propB.propA = 9; = B. * PropBPtr; cout palata 0; } Kaksi luokkaa, ja B on kuvattu. Luokka on ominaisuus, propa, joka on tyyppiä int. Luokka B on omaisuutta, propB, joka on luokan tyyppi. propB on ilmentymä luokan A. Kun B-sarjan kuvaus koodin, sinun on selvitys, AB :: * propBPtr = & B :: propB; Tämä lausunto on alustus toteamus.
Osoitin-to-jäsenen operaattori toimii osoittimen propB luokassa B Tämä on erityinen osoitin, koska se on osoitin kiinteistön luokan kuvaukseen eikä instantiated objekti luokka. Huomaa, että kiinteistö B puhumme täällä on tyyppiä A luokka kuvaus on samanlainen nimiavaruuteen kuvaus. Joten päästä ominaisuus luokka, tarvitset laajuus operaattori (: :) juuri kuin tarvitsee käyttää tunnisteen nimiavaruus kuvaus. Tehkäämme nyt tarkastella alustuksen julkilausuma: Oikealla yksinkertainen sijoitusoperaattorin sinulla viite (& B :: propB) ja kiinteistön B kuvaus, joka on tyyppiä, A.
Huom käytön laajuus operaattori siellä. Vasemmalla olet osoittimen julistuksen tämä ominaisuus, joka on B-luokan kuvaus ja osoitin on osoittaa omaisuutta tyypin A Joten osoitin ilmoitus alkaa, niin B luokan B, laajuus operaattori, sitten osoitin tähdellä ja osoitin; voit antaa millä nimellä haluamasi osoittimen. Tämä lausunto on erityinen osoitin alustus. Nyt voimme katsoa, mitä on päätehtävä. Vuonna tärkein kohde B, jota kutsutaan b, on instantiated. Omaisuus, propB esineen b sitten näytetty. Tämä ominaisuus on tyyppiä A. tavoitteena yhteys on antaa arvoa int omaisuutta kiinteistön b.
Joten se on propa esineen, propB esineen b, joka on todella näytetty. Joten aloitat b, sitten piste, sitten propB, sitten piste ja sitten propa. No, sitten on toimeksiannosta int, joka tässä tapauksessa on 9. seuraavassa lauseessa käyttää osoitin-to-jäsenen toimijalle. Se sitoo propB käyttämällä osoitin kiinteistön B kuvaus. Osoitin on toinen operandi. * Operaattorin ja objektin b on ensimmäinen operandi operaattorin.
Tulos (tai paluu arvo) Tämän sitoutumisen kohde tyypin A Tulos annetaan (kopioidaan) ja instantiated objektin tyypin koodissa; tämä esine on nimeltään, näet lainauksia C ++ erittely siitä sitovan operaattori, (. *). "Binary operaattori. * Sitoo sen toisen operandin, joka on tyyppiä" osoitin jäsen T "(jossa T on täysin määritelty luokka tyyppi) sen ensimmäinen operandi, joka on kuuluttava T. Tuloksena on kohde tyypiltään toisen operandin. ". Nyt seuraava lausunto näyttää arvo int omaisuutta. Tämä arvo on 9, joka määrättiin int omaisuutta esineen tyypin, joka on omaisuutta B kuvaus.
Koska sitova, uusi instantiated objekti, sen arvo on sen omaisuutta. Binary operaattori -> * Tämä operaattori alkaa -> symboli ja sen jälkeen *. Tässä osoitin-to-jäsenen operaattori on sama kuin edellisen operaattori, mutta sen ensimmäinen operandi on osoitin b objektia eikä b objektin tunniste. Seuraava koodi näyttää, miten sitä käytetään: # include using namespace std; luokka {julkinen: int propa; }; B {julkinen: propB; }; B :: * propBPtr = & B :: propB; int main () {B * bPtr; bPtr-> propB.
propA = 9; = BPtr -> * propBPtr; cout palata 0; } Yllä koodi, lausuman osoitin-to-jäsenen operaattori on, = bPtr -> * propBPtr; Osoitin-to-jäsenen toimijat käyttävät vasemmalta oikealle. Sinulla on kaksi niistä, jotka ovat. * Ja ->