矩阵计算
2006 年 09 月 08 日 星期五 10:31
#include "stdafx.h"
class Matrix
{
public:
int x,y; //x,y 分别表示矩阵的列数与行数
double** element; //我们用二维数组来代表矩阵
Matrix(int a=1,int b=1);
~Matrix();
Matrix& operator=(Matrix&); //成员函数,重载运算符"=",进行变量赋值
Matrix& operator+(Matrix&); //成员函数,重载运算符"+",进行两矩阵加法
Matrix& operator-(Matrix&); //成员函数,重载运算符"-",进行两矩阵减法
Matrix& operator*(Matrix&); //成员函数,重载运算符"*",进行两矩阵乘法
void PrintOut(); //成员函数,用于输出矩阵
};
Matrix::Matrix(int a,int b) //构造函数
{
x=a;y=b; //长宽定义
element=new double*[y]; //首先分配一维(宽)
for(int i=0;i<y;i++)
element[i]=new double[x]; //分配二维(长)
}
Matrix::~Matrix() //析构函数
{
for(int i=0;i<y;i++) //析构第二维
delete[] element[i];
delete[] element; //析构第一维
}
Matrix& Matrix::operator =(Matrix& oth) //重载等号
{
if(x==oth.x && y==oth.y) //首先判断矩阵构造是否相同
for(int i=0;i<y;i++)
for(int j=0;j<x;j++)
element[i][j]=oth.element[i][j]; //相同则分别赋值
else
printf("Matrix do not match!"); //不同则输出错误信息