Bij het werken met objecten en andere instanties van een klasse, is toegang tot attributen een van de gebruikelijke handelingen voor een programmeur. Toegang krijgen tot bepaalde gegevens die in objecten zijn opgeslagen, kan moeilijk zijn, gezien de beveiligingsmethoden die ervoor worden gebruikt. De attributen die zijn gesloten door de private en protected-specificaties kunnen dus alleen uit een klasse-instantie worden gehaald in een methode die behoort tot een object van dezelfde of een onderliggende (voor beschermde) klasse.
instructies:
Stap 1
Maak een object of een verwijzing naar een instantie van de klasse waarvan u het attribuut in uw programma nodig hebt. De standaardconstructie voor een dergelijke operatie is CMyClass myObj1. Soms moet u, om een object te initialiseren, bepaalde parameters doorgeven aan de klassenconstructor. In dit geval kan het record van het maken van een object er als volgt uitzien: CMyClass myObj1 (param1, param2, param3), waarbij CMyClass de klassenaam is, myObj1 de naam van het object dat wordt gemaakt en alle parameters die door de constructor zijn aangevraagd, worden weergegeven tussen haakjes. Een verwijzing naar een klasse-instantie wordt als volgt gemaakt: CMyClass * pObj1 = nieuwe CMyClass (param1, param2, param3).
Stap 2
De eenvoudigste manier om een attribuut aan te roepen, is door er direct ergens in het programma naar te verwijzen. Dit is echter alleen mogelijk voor open data beschreven in een klasse met de public modifier. Directe toegang via een object ziet er als volgt uit: myObj1.attr1, waarbij attr1 een attribuut is van deze klasse. Voor een aanwijzer zou de aanroep zijn: pObj1–> attr1.
Stap 3
Als het attribuut waarnaar u moet verwijzen de status verborgen heeft en wordt beschreven in een klasse met de private modifier, dan is toegang ertoe alleen mogelijk vanaf een methode die tot dezelfde klasse behoort. De methode of functie van de klasse moet de publieke status public hebben. Voeg een nieuwe methode toe aan de klasse, waar schrijf de verwerking van het vereiste attribuut. In dit geval kunnen parameters worden doorgegeven aan de functie, afhankelijk van de waarde waarvan bepaalde acties worden uitgevoerd. De functie zelf kan ook gegevens retourneren, zoals de inhoud van een attribuut. C++ programmacode die beide functies implementeert voor het werken met een private attribuut: class CMyClass {protected: int attr1; // openbaar kenmerk: void funcA1 (int param) {attr1 = param; } int funcA2 () {retour attr1; }};
Stap 4
Dus, om het private attribuut attr1 in te stellen op de waarde die je nodig hebt, roep je een methode van dezelfde klasse aan met behulp van het eerder gemaakte object: myObj1.funcA1 (10) - door een vergelijkbare impliciete operatie wordt de waarde 10 geplaatst in het attr1 attribuut. Als u met een pointer naar een instantie van een klasse werkt, ziet een vergelijkbare bewerking er als volgt uit: рObj1–> funcA (10). Om het private attribuut attr1 op te halen en de daarin opgeslagen waarde te achterhalen, roept u een andere methode van de klasse aan: int Res = myObj1.funcA2 (). In dit geval krijgt de integer-variabele Res de waarde van de verborgen klassenvariabele toegewezen.
Stap 5
Als u een attribuut met beschermde status moet aanroepen in alle objecten van onderliggende klassen, verwijs dan rechtstreeks naar de variabele ervan. Bij het werken in functies van buitenlandse klassen zal echter toegang tot beschermde gegevens moeten worden verkregen op de hierboven beschreven manier.
Stap 6
Om een attribuut aan te roepen zonder een object te maken, declareert u de variabele in de klasse als statisch met de volgende constructie: static int attr1. In dit geval kunt u het attribuut overal in de programmacode tevoorschijn halen door de invoer op te geven: CMyClass:: attr1.