Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <memory>
- using namespace std;
- class ASimpleClass{
- void do_a();
- public:
- void do_stuff();
- };
- void ASimpleClass::do_stuff(){
- this->do_a();
- do_a();
- }
- void ASimpleClass::do_a(){
- cout << "ASimpleClass::do_a() executed" << endl;
- }
- class ABaseClass {
- protected:
- virtual void do_a() = 0;
- public:
- virtual void do_stuff();
- virtual ~ABaseClass();
- };
- void ABaseClass::do_stuff(){
- cout << "ABaseClass::do_stuff() executed" <<endl;
- }
- ABaseClass::~ABaseClass(){}
- class ADerivedClass : public ABaseClass{
- protected:
- void do_a() override;
- public:
- void do_stuff() override;
- };
- void ADerivedClass::do_stuff(){
- do_a();
- this->do_a();
- }
- void ADerivedClass::do_a(){
- cout << "ADerivedClass::do_a() called" << endl;
- }
- int main()
- {
- unique_ptr<ASimpleClass> a = unique_ptr<ASimpleClass>( new ASimpleClass());
- a->do_stuff();
- unique_ptr<ABaseClass> b = unique_ptr<ABaseClass>( new ADerivedClass());
- b->do_stuff();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement