#include <iostream> using namespace std; class matrix { protected: int row; int col; int**p; public: matrix(int n, int m); matrix(const matrix& mat); ~matrix(); void input(); void output(); friend matrix operator+(matrix& mat1,matrix& mat2); }; matrix::matrix(int n, int m) { row = n; col = m; p = new int* [row]; for (int i = 0;i < row;i++) { p[i] = new int[col]; } } matrix::matrix(const matrix& mat) { row = mat.row; col = mat.col; p = new int* [row]; for (int i = 0;i < row;i++) { p[i] = new int[col]; for (int j = 0;j < col;j++) { p[i][j] = mat.p[i][j]; } } } matrix::~matrix() { for (int i = 0;i < row;i++) { delete[]p[i]; } delete[]p; } void matrix::input() { cout << "请输入矩阵:" << endl; for (int i = 0;i < row;i++) { for (int j = 0;j < col;j++) { cin >> p[i][j]; } } } void matrix::output() { for (int i = 0;i < row;i++) { for (int j = 0;j < col;j++) { if (j) cout << " "; cout << p[i][j] ; } cout << endl; } } matrix operator+(matrix& mat1,matrix& mat2) { matrix mat3(mat1.row,mat1.col); for (int i = 0;i < mat1.row;i++) { for (int j = 0;j < mat1.col;j++) { mat3.p[i][j] = mat1.p[i][j] + mat2.p[i][j]; } } return mat3; } int main() { int n, m; cout << "请输入矩阵的行数:"; cin >> n; cout << "请输入矩阵的列数:"; cin >> m; matrix mat1(n, m),mat2(n,m),mat3(n,m); cout << "请输入第一个矩阵:"; mat1.input(); cout << "请输入第二个矩阵:"; mat2.input(); mat3 = mat1 + mat2; cout << "两矩阵相加为:" << endl; mat3.output(); return 0; }
时间: 2023-06-19 20:08:00 浏览: 70
#include <iostream>
这是一个矩阵类的示例代码,包括矩阵的构造函数、拷贝构造函数、析构函数、输入输出函数以及矩阵加法运算符重载。用户可以输入两个矩阵,然后将它们相加并输出结果。
其中,矩阵类的成员变量包括行数、列数和一个二维指针,指向存储矩阵元素的二维数组。构造函数中动态分配内存空间,拷贝构造函数实现深拷贝,析构函数释放内存。输入输出函数分别用来读取和输出矩阵元素。矩阵加法运算符重载实现两个矩阵相加并返回一个新的矩阵对象。
该示例代码中,矩阵的元素类型是整型,用户可以根据需要修改为其他类型。
阅读全文