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.
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.
#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
Créer un quizNote : 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 .