fork(2) download
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. struct Dude {
  7. virtual void howdy() = 0;
  8. };
  9. struct Bob : public Dude {
  10. virtual void howdy() { cout << "Hi, Bob!" << endl; }
  11. };
  12. struct Moe : public Dude {
  13. virtual void howdy() { cout << "Hi, Moe!" << endl; }
  14. };
  15. void say_hi(Dude& dude) {
  16. dude.howdy(); // <<== Here is the tricky line
  17. }
  18. int main(int argc, char* argv[]) {
  19. Bob b;
  20. Moe m;
  21. Dude *d = rand() & 1 ? (Dude*)&b : &m;
  22. say_hi(*d);
  23. }
  24.  
Success #stdin #stdout 0s 2728KB
stdin
Standard input is empty
stdout
Hi, Bob!