Når du arbejder med objekter og andre forekomster af en klasse, er adgang til attributter en af de sædvanlige operationer for en programmør. At få adgang til bestemte data, der er gemt i objekter, kan være vanskelig i betragtning af de anvendte sikkerhedsmetoder. Så attributterne lukket af de private og beskyttede specifikationer kan kun trækkes ud af en klasseinstans i en metode, der hører til et objekt af samme eller en underordnet (for beskyttet) klasse.
Instruktioner
Trin 1
Opret et objekt eller en markør til en forekomst af klassen, hvis attribut du har brug for i dit program. Standardkonstruktionen for en sådan operation er CMyClass myObj1. Nogle gange skal du initialisere et objekt ved at videregive bestemte parametre til klassekonstruktøren. I dette tilfælde kan registreringen af oprettelse af objekt se sådan ud: CMyClass myObj1 (param1, param2, param3), hvor CMyClass er klassens navn, myObj1 er navnet på det objekt, der oprettes, og alle parametre, som konstruktøren anmoder om, vises i parentes. En markør til en klasseinstans oprettes som følger: CMyClass * pObj1 = ny CMyClass (param1, param2, param3).
Trin 2
Den enkleste måde at kalde en attribut på er at henvise til den direkte hvor som helst i programmet. Dette er dog kun muligt for åbne data beskrevet i en klasse med den offentlige modifikator. Direkte adgang gennem et objekt ser sådan ud: myObj1.attr1, hvor attr1 er en attribut for denne klasse. For en markør ville opkaldet være: pObj1–> attr1.
Trin 3
Hvis den attribut, som du skal henvise til, har den skjulte status og er beskrevet i en klasse med den private modifikator, er adgangen til den kun mulig fra en metode, der tilhører den samme klasse. Klassens metode eller funktion skal have den offentlige status offentlig. Føj en ny metode til klassen, hvor skriv behandlingen af den krævede attribut. I dette tilfælde kan parametre overføres til funktionen afhængigt af værdien, som visse handlinger udføres for. Selve funktionen kan også returnere data, såsom indholdet af en attribut. C ++ programkode, der implementerer begge funktioner til at arbejde med en privat attribut: klasse CMyClass {beskyttet: int attr1; // offentlig attribut: ugyldig funcA1 (int param) {attr1 = param; } int funcA2 () {return attr1; }};
Trin 4
For at indstille den private attribut attr1 til den værdi, du har brug for, skal du kalde en metode af samme klasse ved hjælp af det tidligere oprettede objekt: myObj1.funcA1 (10) - ved en lignende implicit operation placeres værdien 10 i attr1-attributten. Når du arbejder med en markør til en forekomst af en klasse, vil en lignende operation se sådan ud: рObj1–> funcA (10). For at hente den private attribut attr1 og finde ud af værdien, der er gemt i den, skal du kalde en anden metode i klassen: int Res = myObj1.funcA2 (). I dette tilfælde tildeles heltalsvariablen Res værdien af den skjulte klassevariabel.
Trin 5
Hvis du har brug for at kalde en attribut med beskyttet status i alle objekter i underklasser, henvises der direkte til dens variabel. Når du arbejder i funktioner i udenlandske klasser, skal der dog opnås adgang til beskyttede data på den måde, der er beskrevet ovenfor.
Trin 6
For at kalde en attribut uden at oprette et objekt, erklæres variablen i klassen som statisk ved hjælp af følgende konstruktion: statisk int attr1. I dette tilfælde kan du trække attributten ud hvor som helst i programkoden ved at angive posten: CMyClass:: attr1.