Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Parent
- {
- protected:
- int parentId;
- public:
- virtual void doWork() const { std::cout << "Parents work!\n"; }
- virtual Parent& getThis() { return *this; }
- virtual void fun()= 0;
- virtual ~Parent() = 0;
- };
- Parent::~Parent() {};
- void Parent::fun() { std::cout << "Base fun version\n"; };
- class Child : public Parent
- {
- public:
- char childSym;
- int* pChild;
- public:
- Child() :childSym{ 'Z' }, pChild{ new int{42} } {}
- void doWork() const override { std::cout << "Childs work!\n"; }
- Child& getThis() override { return *this; }
- void fun() { Parent::fun(); std::cout << "Child ver goes..\n"; }
- ~Child() { delete pChild; std::cout << "Child dtor\n"; }
- };
- int main()
- {
- //Parent* pPtr{new Parent};
- //pPtr->doWork();
- Parent* pChild{ new Child };
- pChild->doWork();
- // delete pPtr;
- delete pChild;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement