fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. class A {
  5. public:
  6. void talk() { printf("A\n"); }
  7. };
  8.  
  9. class B: public A {
  10. public:
  11. void talk() { printf("B\n"); }
  12. };
  13.  
  14. int main(void) {
  15. std::vector<A> vec;
  16. std::vector<A*> vec2;
  17. A a;
  18. B b;
  19. a.talk();
  20. b.talk();
  21.  
  22. std::cout << "---------------" << std::endl;
  23. std::cout << "Will always output 'A' as slicing occurs:" << std::endl;
  24.  
  25. vec.push_back(a);
  26. vec.push_back(b);
  27. vec2.push_back(&a);
  28. vec2.push_back(&b);
  29.  
  30. for (auto& c : vec) {
  31. c.talk();
  32. }
  33.  
  34. std::cout << "---------------" << std::endl;
  35. std::cout << "Will make polymorphic call if 'virtual' specifier is enabled:" << std::endl;
  36.  
  37. for (auto& c : vec2) {
  38. c->talk();
  39. }
  40.  
  41. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
A
B
---------------
Will always output 'A' as slicing occurs:
A
A
---------------
Will make polymorphic call if 'virtual' specifier is enabled:
A
A