fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <ctime>
  4.  
  5. class Matrix {
  6. int **ptr = nullptr;
  7. int x = NULL, y = NULL;
  8. public:
  9. Matrix() = default;
  10. Matrix(int i, int j) :x(i), y(j)
  11. {
  12. ptr = new int*[x];
  13. for (int i = 0; i < x; i++)
  14. ptr[i] = new int[y];
  15. }
  16. Matrix(int i) :Matrix(i, i) {}
  17. Matrix(const Matrix &ob) : x(ob.x), y(ob.y)
  18. {
  19. //ўл¤Ґ«пҐ¬ Ї ¬пвм ¤«п Є®ЇЁЁ.
  20. ptr = new int*[ob.x];
  21. for (int i = 0; i < ob.x; i++)
  22. ptr[i] = new int[ob.y];
  23.  
  24. //Є®ЇЁа㥬.
  25. for (int i = 0; i < ob.x; i++)
  26. for (int j = 0; j < ob.y; j++)
  27. ptr[i][j] = ob.ptr[i][j];
  28. }
  29. Matrix& operator=(Matrix rhs);
  30. ~Matrix();
  31.  
  32. void fill();
  33. void show();
  34. };
  35.  
  36. Matrix& Matrix::operator=(Matrix rhs)
  37. {
  38. int tmp = x; x = rhs.x; rhs.x = tmp;
  39. tmp = y; y = rhs.y; rhs.y = tmp;
  40. int ** t = ptr; ptr = rhs.ptr; rhs.ptr = t;
  41. return *this;
  42. }
  43.  
  44. Matrix::~Matrix()
  45. {
  46. for (int i = 0; i < x; i++)
  47. delete[] ptr[i];
  48. delete[] ptr;
  49. }
  50.  
  51. void Matrix::fill()
  52. {
  53. std::srand(std::time(NULL));
  54. for (int i = 0; i < x; i++) {
  55. for (int j = 0; j < y; j++)
  56. ptr[i][j] = rand() % 10;
  57. }
  58. }
  59.  
  60. void Matrix::show()
  61. {
  62. for (int i = 0; i < x; i++) {
  63. for (int j = 0; j < y; j++) {
  64. std::cout << ptr[i][j] << ' ';
  65. } std::cout << std::endl;
  66. } std::cout << std::endl;
  67. }
  68.  
  69. int main()
  70. {
  71. Matrix A(2), B;
  72.  
  73. A.fill();
  74. A.show();
  75.  
  76. B = A;
  77.  
  78. std::cout << std::endl;
  79. B.show();
  80.  
  81. return 0;
  82. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
4 9 
7 0 


4 9 
7 0