代码实践
-
main.cpp
#include <iostream> #include "Matrix.h" using namespace std; int main() { Matrix m0(3, 3); //初始化使用拷贝构造 //Matrix m1(m0); Matrix m1(2, 2); m1 = m0; //赋值使用重载= system("pause"); return 0; }
-
Matrix.h
#pragma once #include <iostream> using namespace std; class Matrix { public: Matrix(int row, int col) :_row(row), _col(col) { _pmat = new double[col * row]; } ~Matrix(); Matrix(const Matrix& rhs); void operator=(Matrix&); private: int _row, _col; double* _pmat; };
-
Matrix.cpp
#include "Matrix.h" Matrix::~Matrix() { delete[] _pmat; } Matrix::Matrix(const Matrix& rhs) :_row(rhs._row), _col(rhs._col) { cout << "Matrix::Matrix(const Matrix& rhs)" << endl; this->_pmat = new double[_row * _col]; for (int i = 0; i < _row * _col; i++) { this->_pmat[i] = rhs._pmat[i]; } } void Matrix::operator=(Matrix&rhs) { this->_col = rhs._col; this->_row = rhs._row; cout << "Matrix::operator=(Matrix&rhs)" << endl; this->_pmat = new double[rhs._col * rhs._row]; for (int i = 0; i < _row * _col; i++) { this->_pmat[i] = rhs._pmat[i]; } }
今天还是20200325 初始化与赋值是好兄弟!