fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. class SBase
  5. {
  6. virtual void work()=0;
  7. };
  8.  
  9. class PBase
  10. {
  11. virtual void doit(SBase&)=0;
  12. };
  13. class P1: public PBase
  14. {
  15. public:
  16. void doit(SBase&s) {cout << "P1" << '\t' << &s <<'\n';};
  17. };
  18. class P2: public P1
  19. {
  20. public:
  21. void doit(SBase&s) {cout << "P2" << '\t' << &s <<'\n';};
  22. };
  23.  
  24. class S : public SBase
  25. {
  26. public:
  27. void work() {
  28. P1 p1;
  29. P2 p2;
  30. p1.doit(*this);
  31. p2.doit(*this);
  32. }
  33. };
  34.  
  35. int main()
  36. {
  37. S s;
  38. s.work();
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
P1	0xbf97f0fc
P2	0xbf97f0fc