Advertisement
avr39ripe

cppPolyMorphismInheritance

Sep 14th, 2021
1,433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class Parent
  4. {
  5. protected:
  6.     int parentId;
  7. public:
  8.     virtual void doWork() const { std::cout << "Parents work!\n"; }
  9.     virtual Parent& getThis() { return *this; }
  10.     virtual void fun()= 0;
  11.     virtual ~Parent() = 0;
  12. };
  13.  
  14. Parent::~Parent() {};
  15. void Parent::fun() { std::cout << "Base fun version\n"; };
  16.  
  17. class Child : public Parent
  18. {
  19. public:
  20.     char childSym;
  21.     int* pChild;
  22. public:
  23.     Child() :childSym{ 'Z' }, pChild{ new int{42} } {}
  24.     void doWork() const override { std::cout << "Childs work!\n"; }
  25.     Child& getThis() override { return *this; }
  26.     void fun() { Parent::fun(); std::cout << "Child ver goes..\n"; }
  27.     ~Child() { delete pChild; std::cout << "Child dtor\n"; }
  28. };
  29.  
  30.  
  31. int main()
  32. {
  33.     //Parent* pPtr{new Parent};
  34.  
  35.     //pPtr->doWork();
  36.    
  37.     Parent* pChild{ new Child };
  38.    
  39.     pChild->doWork();
  40.  
  41. //  delete pPtr;
  42.     delete pChild;
  43.  
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement