Advertisement
rizky_herucakra

simple this example

Sep 6th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <memory>
  3.  
  4. using namespace std;
  5.  
  6. class ASimpleClass{
  7.     void do_a();
  8. public:
  9.     void do_stuff();
  10. };
  11.  
  12. void ASimpleClass::do_stuff(){
  13.     this->do_a();
  14.     do_a();
  15. }
  16.  
  17. void ASimpleClass::do_a(){
  18.     cout << "ASimpleClass::do_a() executed" << endl;
  19. }
  20.  
  21.  
  22. class ABaseClass {
  23. protected:
  24.     virtual void do_a() = 0;
  25. public:
  26.     virtual void do_stuff();
  27.     virtual ~ABaseClass();
  28. };
  29.  
  30. void ABaseClass::do_stuff(){
  31.     cout << "ABaseClass::do_stuff() executed" <<endl;
  32. }
  33.  
  34. ABaseClass::~ABaseClass(){}
  35.  
  36. class ADerivedClass : public ABaseClass{
  37. protected:
  38.     void do_a() override;
  39. public:
  40.     void do_stuff() override;
  41. };
  42.  
  43. void ADerivedClass::do_stuff(){
  44.     do_a();
  45.     this->do_a();
  46. }
  47.  
  48. void ADerivedClass::do_a(){
  49.     cout << "ADerivedClass::do_a() called" << endl;
  50. }
  51.  
  52. int main()
  53. {
  54.     unique_ptr<ASimpleClass> a = unique_ptr<ASimpleClass>( new ASimpleClass());
  55.     a->do_stuff();
  56.  
  57.     unique_ptr<ABaseClass> b = unique_ptr<ABaseClass>( new ADerivedClass());
  58.     b->do_stuff();
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement