fork(2) download
  1. #include <cstring>
  2. #include <iostream>
  3. #include <utility>
  4.  
  5. class MyClass {
  6. public:
  7. MyClass(size_t c): count(c) {
  8. data = new int[count];
  9. }
  10.  
  11.  
  12.  
  13. MyClass( MyClass&& src) : count(src.count) {
  14. data = src.data;
  15. src.count = 0;
  16. src.data = nullptr;
  17. }
  18.  
  19. void operator=( MyClass&& src) {
  20. data = src.data;
  21. count = src.count;
  22. src.count = 0;
  23. src.data = nullptr;
  24. }
  25.  
  26.  
  27.  
  28.  
  29. ~MyClass() {
  30. delete[] data;
  31. }
  32.  
  33. int* get_data() const {
  34. return data;
  35. }
  36.  
  37. size_t get_count() const {
  38. return count;
  39. }
  40.  
  41. private:
  42.  
  43. MyClass(const MyClass& src) : count(src.count) {
  44. data = new int[src.count];
  45. memcpy(data, src.data, sizeof(int)*src.count);
  46. }
  47.  
  48. void operator=(const MyClass& src) {
  49. count = src.count;
  50. data = new int[src.count];
  51. memcpy(data, src.data, sizeof(int)*src.count);
  52. }
  53.  
  54.  
  55. int* data;
  56. size_t count;
  57. };
  58.  
  59.  
  60. int main()
  61. {
  62. MyClass mc(150);
  63. for (size_t i = 0; i < mc.get_count(); ++i)
  64. mc.get_data()[i] = i;
  65. MyClass mc2 = std::move(mc);
  66.  
  67. std::cout << "mc: " << mc.get_count() << '\n';
  68. std::cout << "mc2: " << mc2.get_count() << '\n';
  69. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
mc: 0
mc2: 150