fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. class Animal{
  7. public:
  8. string mName;
  9.  
  10. Animal(string pName){
  11. mName=pName;
  12. }
  13.  
  14. virtual void printAnimal(){
  15. cout<<"Animal "<<this->mName<<endl;
  16. }
  17.  
  18. };
  19.  
  20. class Dog: public Animal{
  21.  
  22. public:
  23. Dog(string pName): Animal(pName){}
  24.  
  25. virtual void printAnimal() override{
  26. cout<<"Dog "<<this->mName<<endl;
  27. }
  28. ~Dog(){
  29. cout<<"Dog "<<this->mName<< " removed." <<endl;
  30. }
  31. };
  32.  
  33. class Cat: public Animal{
  34. public:
  35.  
  36. Cat(string pName): Animal(pName){}
  37.  
  38.  
  39. void printAnimal(){
  40. cout<<"Cat "<<this->mName<<endl;
  41. }
  42. ~Cat(){
  43. cout<<"Cat "<<this->mName<< " removed." <<endl;
  44. }
  45. };
  46.  
  47. shared_ptr<Animal> getCat(){
  48. return make_shared<Cat>("Tom");
  49. }
  50.  
  51. shared_ptr<Animal> getDog(){
  52. return make_shared<Dog>("Scooby");
  53. }
  54.  
  55. int main(){
  56. getCat()->printAnimal();
  57. getDog()->printAnimal();
  58. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
Cat Tom
Cat Tom removed.
Dog Scooby
Dog Scooby removed.