barát jellegét
Barátságos jellemzők ___________________________________________________________ 1
Egy barátságos egy osztályba ____________________________________________________ 1 jellemzői több barát 3. osztály ________________________________________________ tagfüggvény, barátságos _____________________________________________ másik osztály 4
Barátságos osztályok ____________________________________________________________ 5
Mondd, kik a barátaid, és én megmondom ki férhet hozzá a személyes adatait.
A koncepció az adatok beágyazás - alapvető OOP fogalmak. C ++ módot ad a fogalom körül segítségével felhasználóbarát funkciókat. Azonban nem szabad használni, jó ok nélkül. C ++ segítségével állapítsa kétféle osztályba barátok: felhasználóbarát funkciók és felhasználóbarát osztályban.
Egy barátságos egy osztályba
A szokásos módon hozzáférhessenek a saját tagjai az osztály - használata a nyitott tag függvény. Azonban, C ++ támogatja egy másik módja annak, hogy hozzáférést magán az osztályon - segítségével felhasználóbarát funkciókat. Felhasználóbarát funkciók, amelyek nem tagjai az osztályban, de van, hogy a privát tagjai. Sőt, az egyik ilyen funkció van, hogy saját tagjai több osztály.
Ahhoz, hogy függvényeket barátságos egy osztály, a meghatározása Az e csoportba tartozó prototípusa, amely előtt egy kulcsszót barátja. Itt egy példa:
// megjeleníti a nevet és koordinálja az aktuális pont void Print () const;
// értékét adja vissza a távolság az aktuális és a cél pont dupla Dist (Dot B) const;
// értékét adja vissza a két pont közötti távolság
barátja kettős Dist (const Dot A. const Dot B);
// értékét adja vissza a két pont közötti távolság
kettős dist (Dot * pA Dot * pB.); // funkció mutatókat pont // visszaadja a területet egy háromszög csúcsai adott
kettős Area (const Dot A. const Dot B. const Dot C);
kettős Dot. Dist (Dot B) const
Dot.cpp fájl
Dot A ( 'A', 3. 4). B ( 'B', -3 4). Dot C ( 'C');
CharToOem ( "szegmens hossza", S);
cout<
CharToOem ( "háromszög terület", S); cout<
Ebben a példában pont Dot bejelentett osztálynak, és megoldja a problémát, kiszámítjuk a két pont közötti távolság. A probléma megoldódott háromféleképpen.
kettős Dot funkciót. Ker (Dot B) const Dot tagja osztály, és visszaad egy értéket a távolságot a jelenlegi és a célterületeket. A minősítő const mondja a fordító, hogy az állam az aktuális objektum nem kell módosítani. Paraméterként, a függvény megkapja az egész objektum típusú Dot. amely elfoglalja 17 byte a memóriában. osztály tagja funkció által hivatkozott az üzemeltető: A. dist (B). ahol A jelentése az aktuális objektum, és a tárgy a B - paramétert.
Funkció barátja kétszerese Dist (const Dot A. const Dot B) értékét adja vissza a két pont közötti távolság. Const selejtezőn paraméter megmondja a fordítónak, hogy az állam paramétereket nem kell megváltoztatni. Mivel a függvény paraméterei kap két utalást a Dot-típusú objektumokat. amely a memóriában 4 byte. Dist funkciót aktiválja az üzemeltető (A. B). Mivel a függvény egy barátságos osztály Dot. majd hozzáférést a privát tagjai x és y paraméterek A és B, amelyek tárgyakat a típus Dot. segítségével a dot operátor, például:
Segítségével mutatók és hivatkozások tárgyak, mint a paraméterek függvényében tárgyak helyett csökkenti a memória mennyisége, redundáns függvény, és annak idején a hívást.
A fenti példa is tartalmaz megoldást a problémára számítási háromszög területe a globális funkciók kettős Area (const Dot A. const Dot B. const Dot C), amely a PO-
Luciano három hivatkozást szerződési értékét adja vissza a háromszög területe. Ez a funkció a operato-