fork download
  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. struct Base
  7. {
  8. virtual void foo()
  9. {
  10. cout<<"In parent\n";
  11. }
  12. };
  13.  
  14. struct Child1:public Base
  15. {
  16. void foo()
  17. {
  18. cout<<"In Child1\n";
  19. }
  20. void bar(){
  21. cout<<"In Child1 Bar \n";
  22. }
  23. };
  24. struct Child2 : public Base
  25. {
  26. void foo()
  27. {
  28. cout<<"In Child2\n";
  29. }
  30. };
  31.  
  32. int main()
  33. {
  34. Child1* ch1=new Child1;
  35. Child2* ch2=new Child2;
  36.  
  37. std::vector<Base*> vec;
  38. vec.push_back(ch1);
  39. vec.push_back(ch2);
  40.  
  41. vec[0]->foo();//khorooji: In child 1
  42.  
  43. Child1* ch=dynamic_cast<Child1*>(vec[0]);
  44. ch->bar(); // khorooji : In child1 Bar
  45.  
  46. vec[1]->foo();//khorooji : In child2
  47. }
  48.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
In Child1
In Child1 Bar 
In Child2