Åtkomstmodifierare är speciella nyckelord i C++ som styr synligheten för klassmedlemmar (data och funktioner).
De hjälper till att implementera datadöljande genom att begränsa eller tillåta åtkomst till vissa delar av en klass.
hur många nollor i 1 miljard
Låt oss diskutera det en efter en
1. Offentlig specificering
Public specifier gör klassmedlemmar (variabler och funktioner) tillgängliga från var som helst - inuti klassen utanför klassen eller till och med andra filer.
2. Privat specificator
Private specifier gör klassmedlemmar tillgängliga endast i själva klassen (främst medlemsmetoder) och används främst för att dölja data utifrån så att vi kan göra ändringar internt senare utan att ändra koden för dess användare. Som standard är alla klassmedlemmar i C++ privata om ingen specifikator nämns.
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; }
Produktion
Name: Fedrick
Vad händer om vi försöker komma åt privata medlemmar?
Koden ger kompilatorfel som vi kan se nedan.
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; }
Produktion
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. Protected Specifier
- Den skyddade specifikationen gör medlemmar tillgängliga i själva klassen och i dess härledd (barn)klasser men inte utgör extern kod.
- Det används främst i arv, vilket gör att barnklasser kan återanvända eller ändra data och funktioner samtidigt som de hålls dolda från omvärlden.
#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; }
Produktion
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102
Skapa frågesportNotera : Denna åtkomst genom arv kan ändra åtkomstmodifieraren för elementen i basklassen i härledd klass beroende på arvssätt .
skillnaden mellan array och arraylist