Ha objektumokkal és egy osztály más példányaival dolgozik, az attribútumok elérése a programozó egyik szokásos művelete. Az objektumokban tárolt bizonyos adatokhoz való hozzáférés nehéz lehet, tekintettel az azokhoz használt biztonsági módszerekre. Tehát a privát és a védett specifikátorok által bezárt attribútumok csak egy azonos vagy egy gyermek (védett) osztály objektumához tartozó módszerrel vonhatók ki osztálypéldányból.
Utasítás
1. lépés
Hozzon létre egy objektumot vagy mutatót az osztály egy példányához, amelynek attribútumára szüksége van a programjában. Az ilyen műveletek szokásos felépítése a CMyClass myObj1. Néha egy objektum inicializálásához át kell adnia bizonyos paramétereket az osztály konstruktorának. Ebben az esetben az objektum létrehozásának rekordja így nézhet ki: CMyClass myObj1 (param1, param2, param3), ahol a CMyClass az osztály neve, a myObj1 a létrehozandó objektum neve, és a konstruktor által kért összes paraméter fel van sorolva zárójelben. Az osztálypéldány mutatója a következőképpen jön létre: CMyClass * pObj1 = új CMyClass (param1, param2, param3).
2. lépés
Az attribútum meghívásának legegyszerűbb módja, ha közvetlenül hivatkozunk rá bárhol a programban. Ez azonban csak a nyilvános módosítóval rendelkező osztályban leírt nyílt adatokra lehetséges. Az objektumon keresztüli közvetlen hozzáférés így néz ki: myObj1.attr1, ahol az attr1 ennek az osztálynak az attribútuma. Mutató esetén a hívás a következő lenne: pObj1–> attr1.
3. lépés
Ha az attribútum, amelyre hivatkoznia kell, rejtett állapotú, és a privát módosítóval ellátott osztályban van leírva, akkor csak egy osztályhoz tartozó metódusból lehet hozzáférni hozzá. Az osztály módszerének vagy funkciójának nyilvános állapotúnak kell lennie. Adjon hozzá egy új módszert az osztályhoz, ahol írja meg a szükséges attribútum feldolgozását. Ebben az esetben a paraméterek átadhatók a függvénynek, attól függően, hogy mely műveletek értékét hajtják végre. Maga a függvény is adhat vissza adatokat, például egy attribútum tartalmát. C ++ programkód, amely mindkét funkciót megvalósítja a privát attribútummal való munkavégzéshez: osztály CMyClass {védett: int attr1; // public attribute: void funcA1 (int param) {attr1 = param; } int funcA2 () {return attr1; }};
4. lépés
Így az attr1 privát attribútum kívánt értékre történő beállításához hívja meg egy ugyanolyan osztályú metódust a korábban létrehozott objektummal: myObj1.funcA1 (10) - hasonló implicit művelettel a 10 értéket az attr1 attribútumba helyezi. Amikor egy osztály egy példányára mutató mutatóval dolgozunk, egy hasonló művelet így fog kinézni: рObj1–> funcA (10). Az attr1 privát attribútum lekéréséhez és a benne tárolt érték megismeréséhez hívjon meg egy másik metódust az osztályból: int Res = myObj1.funcA2 (). Ebben az esetben a Res egész változóhoz hozzárendelik a rejtett osztályváltozó értékét.
5. lépés
Ha védett státusú attribútumot kell hívnia a gyermekosztály összes objektumában, akkor hivatkozjon közvetlenül annak változójára. Külföldi osztályok funkcióinál azonban a védett adatokhoz való hozzáférést a fent leírt módon kell megszerezni.
6. lépés
Ha egy attribútumot objektum létrehozása nélkül szeretne meghívni, deklarálja az osztályban szereplő változóját statikusnak a következő felépítéssel: static int attr1. Ebben az esetben az attribútumot bárhonnan kihúzhatja a programkódból a CMyClass:: attr1 bejegyzés megadásával.