fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. class String_counter
  5. {
  6. public:
  7. String_counter()
  8. {
  9. value_ = prefix_ + std::to_string(++counter_);
  10. }
  11. ~String_counter()
  12. {
  13. value_ = prefix_ + std::to_string(--counter_);
  14. }
  15. static const std::string& value() { return value_; }
  16. private:
  17. static int counter_;
  18. static const std::string prefix_;
  19. static std::string value_;
  20. };
  21.  
  22. int String_counter::counter_ = 0;
  23. const std::string String_counter::prefix_ = "s";
  24. std::string String_counter::value_ = prefix_ + std::to_string(counter_);
  25.  
  26. int main()
  27. {
  28. std::cout << String_counter::value() << std::endl;
  29. {
  30. String_counter c1;
  31. std::cout << String_counter::value() << std::endl;
  32. {
  33. String_counter c2;
  34. std::cout << String_counter::value() << std::endl;
  35. }
  36. std::cout << String_counter::value() << std::endl;
  37. }
  38. std::cout << String_counter::value() << std::endl;
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
s0
s1
s2
s1
s0