Lorsque vous travaillez avec des objets et d'autres instances d'une classe, l'accès aux attributs est l'une des opérations habituelles pour un programmeur. Accéder à certaines données stockées dans des objets peut être difficile, compte tenu des méthodes de sécurité utilisées pour ceux-ci. Ainsi, les attributs fermés par les spécificateurs private et protected peuvent être extraits d'une instance de classe uniquement dans une méthode appartenant à un objet de la même classe ou d'une classe enfant (pour protected).
Instructions
Étape 1
Créez un objet ou un pointeur vers une instance de la classe dont vous avez besoin de l'attribut dans votre programme. La construction standard pour une telle opération est CMyClass myObj1. Parfois, pour initialiser un objet, vous devez passer certains paramètres au constructeur de classe. Dans ce cas, l'enregistrement de la création de l'objet peut ressembler à ceci: CMyClass myObj1 (param1, param2, param3), où CMyClass est le nom de la classe, myObj1 est le nom de l'objet en cours de création, et tous les paramètres demandés par le constructeur sont répertoriés entre parenthèses. Un pointeur vers une instance de classe est créé comme suit: CMyClass * pObj1 = new CMyClass (param1, param2, param3).
Étape 2
La façon la plus simple d'appeler un attribut est de s'y référer directement n'importe où dans le programme. Cependant, cela n'est possible que pour les données ouvertes décrites dans une classe avec le modificateur public. L'accès direct via un objet ressemble à ceci: myObj1.attr1, où attr1 est un attribut de cette classe. Pour un pointeur, l'appel serait: pObj1–> attr1.
Étape 3
Si l'attribut auquel vous devez vous référer a le statut masqué et est décrit dans une classe avec le modificateur private, alors l'accès à celui-ci n'est possible qu'à partir d'une méthode appartenant à la même classe. La méthode ou la fonction de la classe doit avoir le statut public public. Ajoutez une nouvelle méthode à la classe, où écrivez le traitement de l'attribut requis. Dans ce cas, des paramètres peuvent être passés à la fonction, en fonction de la valeur de laquelle certaines actions sont effectuées. La fonction elle-même peut également renvoyer des données, telles que le contenu d'un attribut. Code de programme C++ qui implémente les deux fonctions pour travailler avec un attribut privé: class CMyClass {protected: int attr1; // attribut public: void funcA1 (int param) {attr1 = param; } int funcA2 () {retour attr1; }};
Étape 4
Ainsi, pour définir l'attribut privé attr1 sur la valeur dont vous avez besoin, appelez une méthode de la même classe en utilisant l'objet créé précédemment: myObj1.funcA1 (10) - par une opération implicite similaire, la valeur 10 est placée dans l'attribut attr1. Lorsque vous travaillez avec un pointeur vers une instance d'une classe, une opération similaire ressemblera à ceci: рObj1–> funcA (10). Pour récupérer l'attribut privé attr1 et connaître la valeur qu'il contient, appelez une autre méthode de la classe: int Res = myObj1.funcA2(). Dans ce cas, la variable entière Res se verra attribuer la valeur de la variable de classe cachée.
Étape 5
Si vous devez appeler un attribut avec un statut protégé dans tous les objets des classes enfants, référez-vous directement à sa variable. Cependant, lorsqu'on travaille dans des fonctions de classes étrangères, l'accès aux données protégées devra être obtenu de la manière décrite ci-dessus.
Étape 6
Pour appeler un attribut sans créer d'objet, déclarez sa variable dans la classe comme statique en utilisant la construction suivante: static int attr1. Dans ce cas, vous pouvez extraire l'attribut n'importe où dans le code du programme en spécifiant l'entrée: CMyClass:: attr1.