fork download
  1. #include <iostream>
  2.  
  3. class SomeClass {
  4. public:
  5. SomeClass()
  6. {
  7. std::cout << "SomeClass()" << std::endl;
  8. }
  9. SomeClass(const SomeClass& other)
  10. {
  11. std::cout << "SomeClass(const SomeClass& other)" << std::endl;
  12. }
  13. SomeClass(SomeClass&& other)
  14. {
  15. std::cout << "SomeClass(SomeClass&& other)" << std::endl;
  16. }
  17. SomeClass& operator=(const SomeClass& other)
  18. {
  19. std::cout << "SomeClass& operator=(const SomeClass& other)" << std::endl;
  20. }
  21. SomeClass& operator=(SomeClass&& other)
  22. {
  23. std::cout << "SomeClass& operator=(SomeClass&& other)" << std::endl;
  24. }
  25. ~SomeClass()
  26. {
  27. std::cout << "~SomeClass()" << std::endl;
  28. }
  29. };
  30.  
  31. int main()
  32. {
  33. std::cout << "1" << std::endl;
  34. SomeClass c1; // default constructor
  35. std::cout << "2" << std::endl;
  36. SomeClass c2(c1); // copy constructor
  37. std::cout << "3" << std::endl;
  38. SomeClass c3 = c2; // default constructor and copy assignment operator or just copy constructor
  39. std::cout << "4" << std::endl;
  40. c1 = c2; // copy assignment operator
  41. std::cout << "5" << std::endl;
  42. SomeClass c4(std::move(c3)); // move constructor
  43. std::cout << "6" << std::endl;
  44. c4 = std::move(c1); // move assignment operator
  45. return 0;
  46. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
1
SomeClass()
2
SomeClass(const SomeClass& other)
3
SomeClass(const SomeClass& other)
4
SomeClass& operator=(const SomeClass& other)
5
SomeClass(SomeClass&& other)
6
SomeClass& operator=(SomeClass&& other)
~SomeClass()
~SomeClass()
~SomeClass()
~SomeClass()