• Lunes 13 de Mayo de 2024, 06:53

Autor Tema:  [C++] Duda sobre funciones amigas y herencia  (Leído 2546 veces)

Vndecid

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
[C++] Duda sobre funciones amigas y herencia
« en: Lunes 1 de Noviembre de 2010, 17:21 »
0
Hola Tengo una duda sobre funciones amigas y Herencia

Supongamos que tengo una clase "base" que contiene la funcion amiga friend ostream (etc saraza o sea todo lo demas)
Cuando hago una clase "derivada" de esa base la funcion amiga friend ostream(etc) y sus metodos ¿Se heredan? y si es asi ¿Como ingreso/utilizo a ellas?

Desde ya muchas gracias

alb

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: [C++] Duda sobre funciones amigas y herencia
« Respuesta #1 en: Martes 2 de Noviembre de 2010, 19:07 »
0
Holà,
La amistad no se transmite con herencia.
Aunque no me sale evidente de porque necesitas herencia con ostream ? Para eso, function virtual es bastante :
Código: C++
  1. #include <iostream>
  2.  
  3. struct base
  4. {
  5.     std::ostream& print(std::ostream&out_) const
  6.     {
  7.         out_<<"I'am a class : ";
  8.         return do_print(out_);
  9.     }
  10.     virtual ~base() // =default con C++0x
  11.     {}
  12. private :
  13.     virtual std::ostream& do_print(std::ostream&out_) const
  14.     {
  15.         return out_<<"base";
  16.     }
  17. };
  18.  
  19. struct derived : public base
  20. {
  21.     private:
  22.     virtual std::ostream& do_print(std::ostream&out_) const
  23.     {
  24.         return out_<<"derived";
  25.     }
  26. };
  27.  
  28. std::ostream& operator<<(std::ostream&out_, base const &base_)
  29. {
  30.     base_.print(out_);
  31.     return out_<<"n";
  32. }
  33.  
  34. void tell_me_who_am_i(base const&b_)
  35. {
  36.     std::cout<<b_;
  37. }
  38.  
  39. int main()
  40. {
  41.     tell_me_who_am_i(base());
  42.     tell_me_who_am_i(derived());
  43.    return 0;
  44. }
  45.  
  46.  

Vndecid

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: [C++] Duda sobre funciones amigas y herencia
« Respuesta #2 en: Martes 2 de Noviembre de 2010, 19:45 »
0
Gracias ,te explico nos piden eso por que es la ultima parte del curso de  Programacion en el cual  dan una introduccion muy introductoria a C++