fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. class matrix_mv
  7. {
  8. public:
  9. matrix_mv()
  10. {
  11. cout << "Тяжёлое создание matrix_mv." << endl;
  12. data = new double[1000 * 1000];
  13. }
  14.  
  15. matrix_mv(const matrix_mv& other)
  16. {
  17. cout << "Тяжёлое копирование matrix_mv." << endl;
  18. data = new double[1000 * 1000];
  19. memcpy(data, other.data, 1000 * 1000 * sizeof(double));
  20. }
  21.  
  22. matrix_mv(matrix_mv&& other)
  23. {
  24. cout << "Лёгкое перемещение matrix_mv." << endl;
  25. data = other.data;
  26. other.data = nullptr;
  27. }
  28.  
  29. ~matrix_mv()
  30. {
  31. if (data)
  32. cout << "Тяжёлое уничтожение matrix_mv с данными." << endl;
  33. else
  34. cout << "Лёгкое уничтожение опустошённой matrix_mv." << endl;
  35. delete[] data;
  36. }
  37.  
  38. private:
  39. double* data;
  40. };
  41.  
  42. int main()
  43. {
  44. vector<matrix_mv> v;
  45. v.push_back(matrix_mv());
  46. return 0;
  47. }
Success #stdin #stdout 0s 4884KB
stdin
Standard input is empty
stdout
Тяжёлое создание matrix_mv.
Лёгкое перемещение matrix_mv.
Лёгкое уничтожение опустошённой matrix_mv.
Тяжёлое уничтожение matrix_mv с данными.