Todos los miembros de la clase declarados como públicos estarán disponibles para todos. Otras clases también pueden acceder a los miembros de datos y las funciones miembro declaradas públicas. Se puede acceder a los miembros públicos de una clase desde cualquier parte del programa utilizando el operador de acceso directo a miembros (.) con el objeto de esa clase.
Ejemplo:
// C++ program to demonstrate public // access modifier #include <iostream> using namespace std; // class definition class Circle { public: double radius; double compute_area() { return 3.14 * radius * radius; } }; // main function int main() { Circle obj; // accessing public data member outside class obj.radius = 5.5; cout << "Radius is: " << obj.radius << "\n"; cout << "Area is: " << obj.compute_area(); return 0; }
Radius is: 5.5 Area is: 94.985
En el programa anterior, el radio del miembro de datos es público, por lo que podemos acceder a él fuera de la clase.
El modificador de acceso protegido es similar al de los modificadores de acceso privado, la diferencia es que los miembros de la clase declarados como protegidos son inaccesibles fuera de la clase, pero cualquier subclase (clase derivada) de esa clase puede acceder a ellos.
Ejemplo:
// C++ program to demonstrate // protected access modifier #include <bits/stdc++.h> using namespace std; // base class class Parent { // protected data members protected: int id_protected; }; // sub class or derived class class Child : public Parent { public: void setId(int id) { // Child class is able to access the inherited // protected data members of base class id_protected = id; } void displayId() { cout << "id_protected is: " << id_protected << endl; } }; // main function int main() { Child obj1; // member function of the derived class can // access the protected data members of the base class obj1.setId(81); obj1.displayId(); return 0; }
Diferencia entre público y protegido
Público | Protegido |
---|---|
Todos los miembros de la clase declarados como públicos estarán disponibles para todos. | El modificador de acceso protegido es similar al de los modificadores de acceso privado. |
Otras clases también pueden acceder a los miembros de datos y las funciones miembro declaradas públicas. | Los miembros de la clase declarados como protegidos son inaccesibles fuera de la clase, pero cualquier subclase (clase derivada) de esa clase puede acceder a ellos. |