fork(3) download
  1. #include <iostream>
  2.  
  3. class Example {
  4. public:
  5. Example() = default;
  6.  
  7. virtual void virt_func() {
  8. std::cout << "Example virt_func" << std::endl;
  9. }
  10.  
  11. void nonvirt_func() {
  12. std::cout << "Example nonvirt_func" << std::endl;
  13. }
  14. };
  15.  
  16. class Child: public Example {
  17. public:
  18. Child() = default;
  19.  
  20. void virt_func() {
  21. std::cout << "Child virt_func" << std::endl;
  22. }
  23.  
  24. void nonvirt_func() {
  25. std::cout << "Child nonvirt_func" << std::endl;
  26. }
  27. };
  28.  
  29. int main() {
  30. Child c;
  31. std::cout << "On Child instance:" << std::endl;
  32. c.virt_func();
  33. c.nonvirt_func();
  34.  
  35. Example& e1 = c;
  36. std::cout << "\nOn Example& casted from c:" << std::endl;
  37. e1.virt_func();
  38. e1.nonvirt_func();
  39.  
  40. Example e2 = c;
  41. std::cout << "\nOn Example instance constructed from c:" << std::endl;
  42. e2.virt_func();
  43. e2.nonvirt_func();
  44. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
On Child instance:
Child virt_func
Child nonvirt_func

On Example& casted from c:
Child virt_func
Example nonvirt_func

On Example instance constructed from c:
Example virt_func
Example nonvirt_func