fork download
  1. #include <iostream>
  2. #include <cassert>
  3. class Printer {
  4. static int count;
  5. public:
  6. static Printer* create() {
  7. return (count == 0) ? ++count, new Printer : 0;
  8. }
  9. ~Printer() {--count;}
  10. private:
  11. Printer() {}
  12. public:
  13. void print() {std::cout<<"I am a printer"<<std::endl;}
  14. };
  15.  
  16. int Printer::count = 0;
  17.  
  18. int main() {
  19. Printer* p1 = Printer::create();
  20. assert(p1);
  21. Printer* p2 = Printer::create();
  22. assert(!p2);
  23. delete p1;
  24. Printer* p3 = Printer::create();
  25. assert(p3);
  26. p3->print();
  27. Printer p4(*p3);
  28. delete p3;
  29. }
  30.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
I am a printer