Requisito previo: Modificadores de acceso en c , Herencia
1. ¿Cuál es la salida?
C++
#include <iostream> using namespace std; class access { int a = 10; void disp() { cout<< "a: "<< a; } }; int main() { access a; a.disp(); return 0; }
Producción:
Error
Descripción: cuando no se especifican los especificadores de acceso, se toman como privados de forma predeterminada. Solo se puede acceder a las variables privadas dentro de la clase y no se puede acceder usando. operador también si no es público.
2. ¿Cuál es la salida?
C++
#include <iostream> using namespace std; class access { private: int a_pri = 10; protected: int b_pro = 20; public: int c_public = 30; }; int main() { access a; cout<< "private: " << a.a_pri; cout<< "protected: "<< a.b_pro; cout<< "public: " << a.c_public; return 0; }
Producción:
error
Descripción: no se puede acceder a las variables privadas y protegidas fuera de la clase.
3. ¿Cuál es la salida?
C++
#include <iostream> using namespace std; class access { protected: int b_pro = 20; public: int c_public = 30; }; class access_modifier: public access { public: void disp() { cout<< "protected: "<< b_pro << endl; cout<< "public: " << c_public << endl; } }; int main() { access_modifier a; a.disp(); return 0; }
Producción:
protected: 20 public: 30
Descripción: sólo se puede acceder a las variables protegidas de forma derivada de la misma. Aquí no podemos imprimir a_pri ya que es un miembro privado y no se puede acceder a ellos en la clase derivada independientemente del tipo de herencia.
4. ¿Cuál es la salida?
C++
#include <iostream> using namespace std; class rectangle { int x, y; public: void val (int, int); int area () { return (x * y); } }; void rectangle::val (int a, int b) { x = a; y = b; } int main () { rectangle rect; rect.val (3, 4); cout << "rect area: " << rect.area(); return 0; }
Producción:
rect area: 12
Descripción: dado que tanto area() como val() se declaran como públicos, se puede acceder a ellos fuera de la clase.
5. ¿Cuál es la salida?
C++
#include <iostream> using namespace std; class access { public: int a_public = 30; }; class access_modifier: private access { }; class inheritance:public access_modifier { public: void disp() { cout<< access::a_public; } }; int main() { inheritance a; a.disp(); return 0; }
Salida: error
Descripción: cuando una clase se deriva como herencia privada, sus variables se vuelven privadas y solo se accede a ellas en esa clase y en herencias posteriores no son accesibles.
Este artículo es una contribución de I.HARISH KUMAR . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA