Prediga la salida del siguiente programa.
#include <iostream> using namespace std; class A { protected: int x; public: A() {x = 0;} friend void show(); }; class B: public A { public: B() : y (0) {} private: int y; }; void show() { A a; B b; cout << "The default value of A::x = " << a.x << " "; cout << "The default value of B::y = " << b.y; }
(A) Error del compilador en show() porque x está protegido en la clase A
(B) Error del compilador en show() porque y es privado en la clase b
(C) El valor predeterminado de A::x = 0 El valor predeterminado de B ::y = 0
(D)
Respuesta dependiente del compilador : (B)
Explicación: tenga en cuenta que show() es un amigo de la clase A, por lo que no debería haber ningún error del compilador al acceder a cualquier miembro de A en show().
La clase B se hereda de A, el punto importante a tener en cuenta aquí es que la amistad no se hereda. Por lo tanto, show() no se convierte en amigo de B y, por lo tanto, no puede acceder a miembros privados de B.
Cuestionario de esta pregunta
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