Modificateurs d'accès en C++

Modificateurs d'accès en C++

Les modificateurs d'accès sont mots-clés spéciaux en C++ qui contrôlent la visibilité des membres de la classe (données et fonctions).
Ils aident à mettre en œuvre le masquage des données en restreignant ou en autorisant l'accès à certaines parties d'une classe.

types_of_access_modifier

Discutons-en un par un

1. Spécificateur public

Le spécificateur public rend les membres de la classe (variables et fonctions) accessibles de n'importe où - à l'intérieur de la classe en dehors de la classe ou même d'autres fichiers.

2. Spécificateur privé

Le spécificateur privé rend les membres de la classe accessibles uniquement à l'intérieur de la classe elle-même (principalement les méthodes membres) et est principalement utilisé pour masquer les données de l'extérieur afin que nous puissions apporter des modifications en interne ultérieurement sans changer le code de ses utilisateurs. Par défaut, tous les membres de la classe en C++ sont privés si aucun spécificateur n'est mentionné.

CPP
   #include          using     namespace     std  ;   class     Employee     {   private  :         // salary and empId cannot be accessed       // from outside the Class      double     salary  ;      int     empID  ;   public  :         string     name  ;     // Name can be accessed anywhere          Employee  (  string     n       double     s       int     id  )     {      name     =     n  ;      salary     =     s  ;      empID     =     id  ;      }   };   int     main  ()     {      Employee     emp  (  'Fedrick'       50000       101  );      cout      < <     'Name: '      < <     emp  .  name      < <     endl  ;      return     0  ;   }   

Sortir
Name: Fedrick  

Que se passe-t-il si nous essayons d'accéder à des membres privés ?

Le code donne une erreur du compilateur comme nous pouvons le voir ci-dessous.

C++
   #include          using     namespace     std  ;   class     Employee     {   private  :         double     salary  ;      int     empID  ;   public  :         string     name  ;      // Constructor      Employee  (  string     n       double     s       int     id  )     {      name     =     n  ;      salary     =     s  ;      empID     =     id  ;      }   };   int     main  ()     {      Employee     emp  (  'Fedrick'       50000       101  );      cout      < <     emp  .  salary      < <     endl  ;         return     0  ;   }   

Sortir

 compilation error    
prog.cpp: In function ‘int main()’:
prog.cpp:22:17: error: ‘double Employee::salary’ is private within this context
cout < < emp.salary < < endl;
^~~~~~
prog.cpp:6:12: note: declared private here
double salary;
^~~~~~

3. Spécificateur protégé

  • Le spécificateur protégé rend les membres accessibles à l'intérieur de la classe elle-même et dans son dérivé (enfants) mais ne forment pas de code extérieur.
  • Il est principalement utilisé dans l'héritage permettant aux classes enfants de réutiliser ou de modifier des données et des fonctions tout en les gardant cachées du monde extérieur.
CPP
   #include          using     namespace     std  ;   class     Employee     {   private  :         double     salary  ;   protected  :         int     empID  ;   public  :         string     name  ;      Employee  (  string     n       double     s       int     id  )     {      name     =     n  ;      salary     =     s  ;      empID     =     id  ;      }   };   // Derived class (inherits from Employee)   class     Manager     :     public     Employee     {   public  :      Manager  (  string     n       double     s       int     id  )     :     Employee  (  n       s       id  )     {}      void     showDetails  ()     {      cout      < <     'Manager Name: '      < <     name      < <     endl  ;         cout      < <     'Manager ID: '      < <     empID      < <     endl  ;         }   };   int     main  ()     {      Employee     emp  (  'Fedrick'       50000       101  );      cout      < <     'Employee Name: '      < <     emp  .  name      < <     endl  ;      Manager     m  (  'Rohit'       70000       102  );      m  .  showDetails  ();         return     0  ;   }   

Sortir
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102  


Note : Cet accès par héritage peut modifier le modificateur d'accès des éléments de la classe de base en classe dérivée en fonction du mode d'héritage .

Créer un quiz