Supongamos que tengo una clase Base
:¿La amistad se hereda en C++?
class Base {
friend SomeOtherClass;
};
y hay otro (diferente) clase que hereda de Base
:
class AnotherClass : public Base {}
es la amistad heredó así?
Supongamos que tengo una clase Base
:¿La amistad se hereda en C++?
class Base {
friend SomeOtherClass;
};
y hay otro (diferente) clase que hereda de Base
:
class AnotherClass : public Base {}
es la amistad heredó así?
En principio, una clase derivada hereda todos los miembros de una clase base, excepto:
* its constructor and its destructor
* its operator=() members
* its friends
Así, no. Los amigos no son heredados.
Es interesante que haya elegido la redacción exacta para decir que, como este sitio web: http://www.cplusplus.com/doc/tutorial/inheritance/ – dicroce
Quizás una buena pregunta para hacer ahora es ¿puede hacer que la amistad se herede? ? Sin duda sería útil para lo que estoy haciendo en lugar de escribir una lista de todas las clases en las que quiero tener "amistad". – user3728501
No, no es, como se documenta aquí: http://www.parashift.com/c++-faq-lite/friends.html#faq-14.4
El ejemplo en el enlace muestra el caso opuesto a la pregunta del OP. Me gustaría agregar que 'SomeOtherClass' tendrá acceso a los campos' Base' y métodos heredados en los objetos de 'AnotherClass'. –
No, no lo es.
Editar: citar el estándar de C++, la sección de 11,4/8
amistad ni se hereda ni transitiva.
Otra pregunta que debería haber sido respondida fácilmente usando un COMPILADOR. – shoosh
@shoosh: los compiladores no se ajustan necesariamente a las normas. Tal pregunta debe ser respondida por el estándar, no por los compiladores. –
@shoosh ¿Qué compilador? VS para Windows o g ++ para Unix? ¿Qué versión de C++ estándar? Hay muchas preguntas que puede hacer incluso si el compilador funciona o no funciona. – user3728501