fork download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. class B
  6. {
  7. public:
  8. B(): b_string_("") {};
  9. virtual ~B() {}
  10. virtual std::string getString() const { return b_string_; }
  11. virtual void setString(const std::string& value) { b_string_ = value; }
  12. private:
  13. std::string b_string_;
  14. };
  15.  
  16. class B_null : public B
  17. {
  18. public:
  19. virtual std::string getString() const { return ""; }
  20. };
  21.  
  22. B_null null_b;
  23.  
  24. class A
  25. {
  26. public:
  27. A(B* b = NULL) { if (b == NULL) b_ = &null_b; else b_ = b; }
  28. void print() { cout << "b_->getString(): \"" << b_->getString() << "\"" << endl; }
  29. private:
  30. B *b_;
  31. };
  32.  
  33.  
  34. int main()
  35. {
  36. A a1;
  37. a1.print();
  38.  
  39. B b;
  40. b.setString("blah");
  41. A a2(&b);
  42. a2.print();
  43. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
b_->getString(): ""
b_->getString(): "blah"