fork download
  1. #include <iostream>
  2. struct Base {
  3. virtual void sayHi() {
  4. std::cout << "Hi from Base!\n";
  5. }
  6.  
  7. virtual ~Base() {}
  8. };
  9.  
  10. struct Derived : Base {
  11. virtual void sayHi() {
  12. std::cout << "Hi from Derived!\n";
  13. }
  14. };
  15.  
  16. void sayHelloToMyValue(Base o) {
  17. o.sayHi();
  18. }
  19.  
  20. void sayHelloToMyReference(Base &o) {
  21. o.sayHi();
  22. }
  23.  
  24. void sayHelloToMyPointer(Base *o) {
  25. o->sayHi();
  26. }
  27.  
  28. int main(int, char**) {
  29. Derived d; // No dynamic allocation!
  30. Base &base = d;
  31.  
  32. sayHelloToMyValue(base);
  33. sayHelloToMyReference(base);
  34. sayHelloToMyPointer(&base);
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Hi from Base!
Hi from Derived!
Hi from Derived!