• Source
    1. #include <iostream>
    2. #include <stdio.h>
    3. #include <vector>
    4. #include <memory>
    5. using namespace std;
    6.  
    7. class Animal
    8. {
    9. public:
    10. virtual ~Animal(){}
    11. virtual void walking()=0;
    12. };
    13. class Dog: public Animal
    14. {
    15. public:
    16. virtual void walking()
    17. {
    18. printf("dogs walk on four legs\n");
    19. }
    20. };
    21. class Pig:public Animal
    22. {
    23. public:
    24. virtual void walking()
    25. {
    26. printf("Pigs walk on four legs\n");
    27. }
    28. };
    29. class Chicken:public Animal
    30. {
    31. public:
    32. virtual void walking()
    33. {
    34. printf("chickens walk on two legs\n");
    35. }
    36. };
    37. int main()
    38. {
    39.  
    40. printf("class relization relationship\n");
    41. vector<shared_ptr<Animal>> animals;
    42. animals.push_back(shared_ptr<Animal>(new Dog()));
    43. animals.push_back(shared_ptr<Animal>(new Chicken()));
    44. animals.push_back(shared_ptr<Animal>(new Pig()));
    45.  
    46. for (auto& i : animals)
    47. i->walking();
    48.  
    49. return 0;
    50. }