fork(2) download
  1. #include <string>
  2. #include <iostream>
  3.  
  4. class BaseIf
  5. {
  6. public:
  7. virtual ~BaseIf() {}
  8.  
  9. virtual std::string getName() = 0;
  10. };
  11.  
  12. class IntIf : public virtual BaseIf
  13. {
  14. public:
  15. virtual ~IntIf() {}
  16.  
  17. virtual int getValue() = 0;
  18. };
  19.  
  20. class FloatIf : public virtual BaseIf
  21. {
  22. public:
  23. virtual ~FloatIf() {}
  24.  
  25. virtual float getValue() = 0;
  26. };
  27.  
  28. class BaseImpl : public virtual BaseIf
  29. {
  30. public:
  31. std::string getName () override { return "whoa dude"; }
  32. };
  33.  
  34. class IntImpl : public virtual IntIf, public BaseImpl
  35. {
  36. public:
  37. int getValue() override { return 42; }
  38. };
  39.  
  40. int main()
  41. {
  42. BaseIf* bif = new IntImpl;
  43. std::cout << bif->getName() << "\n";
  44.  
  45. IntImpl iimp;
  46. std::cout << iimp.getName() << "\n";
  47.  
  48. }
Success #stdin #stdout 0s 4192KB
stdin
Standard input is empty
stdout
whoa dude
whoa dude