C++ | palabra clave amigo | Pregunta 1

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *