Si una clase derivada se hereda de forma privada de una clase base y la clase derivada tiene una función amiga f(), ¿qué miembros pueden acceder desde la clase derivada y la clase base?función de amigo en clase derivada con herencia privada
class Base {
public:
int a;
protected:
int b;
private:
int c;
};
class Derived: private Base {
void friend f() {}
public:
int d;
protected:
int e;
private:
int f;
};
entiendo que si una clase se hereda de forma privada de la clase base, todo lo que es privado en la clase derivada.
¿Pero por qué en el código anterior, la función f() puede acceder a a, b, d, e, f pero no c?
+1 para la analogía. –
La analogía en este caso sería más cercana a: 'otorgar acceso a mis amigos a mi casa no les dará acceso a la protección de mi padre que no puedo abrir' –
@dribeas: Sí, su analogía está más cerca del comportamiento de C++. –