En C ++, la amistad no se hereda. Si una clase base tiene una función amiga, entonces la función no se convierte en amiga de las clases derivadas.

Por ejemplo, el siguiente programa imprime un error porque show() que es un amigo de la clase base A intenta acceder a datos privados de clase derivada B.

#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()

{

  B b;

  cout << "The default value of A::x = " << b.x;

 

  

  cout << "The default value of B::y = " << b.y;

}

 

int main()

{

  show();

  getchar();

  return 0;

}

Gracias a Venki por el código y la explicación anteriores.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente.

Deja una respuesta

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