fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. struct TestClass
  5. {
  6. TestClass()
  7. {
  8. std::cout << "Instance has been constructed" << std::endl;
  9. }
  10. TestClass(const TestClass &from)
  11. {
  12. std::cout << "Copy has been constructed" << std::endl;
  13. }
  14. TestClass &operator=(const TestClass &from)
  15. {
  16. std::cout << "Assignment" << std::endl;
  17. return *this;
  18. }
  19. ~TestClass()
  20. {
  21. std::cout << "Instance has been destructed" << std::endl;
  22. }
  23. };
  24.  
  25. typedef std::basic_string<TestClass> weird_string;
  26.  
  27. void Do1(weird_string t)
  28. {
  29. }
  30. void Do2(weird_string &t)
  31. {
  32. }
  33.  
  34. int main()
  35. {
  36. weird_string test(1,TestClass());
  37. std::cout << "Start of main" << std::endl;
  38. std::cout << "Do1:" << std::endl;
  39. Do1(test);
  40. std::cout << "Do2:" << std::endl;
  41. Do2(test);
  42. std::cout << "End of main" << std::endl;
  43. }
Success #stdin #stdout 0.01s 2860KB
stdin
Standard input is empty
stdout
Instance has been constructed
Instance has been constructed
Copy has been constructed
Copy has been constructed
Assignment
Instance has been destructed
Assignment
Instance has been destructed
Instance has been destructed
Start of main
Do1:
Do2:
End of main
Instance has been destructed