fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class persona
  5. {
  6. protected:
  7. virtual string quien_soy(string x=""s) {
  8. const auto s="Soy una persona.\n"s;
  9. auto p=x.find(s);
  10. if (p==string::npos)
  11. x += s;
  12. else {
  13. x = x.substr(0,p)+ x.substr(p+s.size()) +s;
  14. }
  15. return x;
  16. }
  17. public:
  18. void que_eres() { cout<<quien_soy() <<endl; }
  19. virtual ~persona() {}
  20. };
  21.  
  22. class estudiante: public virtual persona
  23. {
  24. protected:
  25. string quien_soy(string x=""s) override
  26. {
  27. return persona::quien_soy(x+"Soy un estudiante.\n");
  28. }
  29. };
  30.  
  31. class empleado: public virtual persona
  32. {
  33. protected:
  34. string quien_soy(string x=""s) override
  35. {
  36. return persona::quien_soy(x+"Soy un empleado.\n");
  37. }
  38. };
  39.  
  40. class practicante: public estudiante, public empleado
  41. {
  42. protected:
  43. string quien_soy(string x=""s) override
  44. {
  45. return empleado::quien_soy(estudiante::quien_soy(x+"Soy un praticante, por consiguiente:\n"));
  46. }
  47. };
  48.  
  49. int main()
  50. {
  51. practicante jose;
  52. jose.que_eres();
  53. }
Success #stdin #stdout 0s 4544KB
stdin
Standard input is empty
stdout
Soy un praticante, por consiguiente:
Soy un estudiante.
Soy un empleado.
Soy una persona.