📄 matrix.cpp
字号:
// CMatrix.cpp: implementation of the CMatrix class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Matrix.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
////////////////////////////////////////////////////////////////////////
//无参构造函数CMatrix()
//----------------------------------------------------------------------
//基本功能:矩阵类的无参构造函数,只是生成矩阵类对象,需要再调用Creat()函
// 数以创建其元素。
//----------------------------------------------------------------------
//返 回:矩阵类对象指针
//----------------------------------------------------------------------
//编 者:耿 楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::CMatrix()
{
//元素为空
data = NULL;
}
////////////////////////////////////////////////////////////////////////
//构造函数CMatrix()
//----------------------------------------------------------------------
//基本功能:用传入的参数构造矩阵类对象。这里动态生成一个二维数组,用于存
// 储矩阵数据,数组类形已定义为double型。
//----------------------------------------------------------------------
//参数说明:int RowNumber 矩阵的行数
// int ColumnNumber 矩阵的列数
//----------------------------------------------------------------------
//返 回:矩阵类对象指针
//----------------------------------------------------------------------
//编 者:耿 楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::CMatrix(int RowNumber, int ColumnNumber)
{
//为矩阵元素分配内空间
data = new TYPE[RowNumber*ColumnNumber];
//为行数赋值
this->RowNumber = RowNumber;
//为列数赋值
this->ColumnNumber = ColumnNumber;
}
////////////////////////////////////////////////////////////////////////
//拷贝构造函数CMatrix()
//----------------------------------------------------------------------
//基本功能:用传入的参数CMatrix &Matrix拷贝构造另一个矩阵类对象。
//----------------------------------------------------------------------
//参数说明:int RowNumber 矩阵的行数
// int ColumnNumber 矩阵的列数
//----------------------------------------------------------------------
//返 回:矩阵类对象指针
//----------------------------------------------------------------------
//编 者:耿 楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::CMatrix(CMatrix &Matrix)
{
//列数
this->ColumnNumber = Matrix.GetColumnNumber();
//行数
this->RowNumber = Matrix.GetRowNumber();
//数据
data = new TYPE[RowNumber * ColumnNumber];
*this = Matrix;
}
////////////////////////////////////////////////////////////////////////
//创建矩阵函数Create()
//----------------------------------------------------------------------
//基本功能:用传入的参数创建矩阵类对象。这里动态生成一个二维数组,用于存
// 储矩阵数据,数组类形已定义为double型。
//----------------------------------------------------------------------
//参数说明:int RowNumber 矩阵的行数
// int ColumnNumber 矩阵的列数
//----------------------------------------------------------------------
//返 回:矩阵类对象指针
//----------------------------------------------------------------------
//编 者:耿 楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::Create(int RowNumber,int ColumnNumber)
{
//为矩阵元素分配内空间
data = new TYPE[RowNumber*ColumnNumber];
//为行数赋值
this->RowNumber = RowNumber;
//为列数赋值
this->ColumnNumber = ColumnNumber;
}
////////////////////////////////////////////////////////////////////////
//析构函数~CMatrix()
//----------------------------------------------------------------------
//基本功能:用于删除存储矩阵数据的内存堆
//----------------------------------------------------------------------
//参数说明:无
//----------------------------------------------------------------------
//返 回:无
//----------------------------------------------------------------------
//编 者:耿 楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::~CMatrix()
{
//删除存储矩阵数据的内存堆
delete data;
}
////////////////////////////////////////////////////////////////////////
//操作符重载operator[]()
//----------------------------------------------------------------------
//基本功能:用于重载操作符[],允许用Matrix[i][j]的形式直接对矩阵的元素进
// 操作。
//----------------------------------------------------------------------
//参数说明:int Row 矩阵元素的下标
//----------------------------------------------------------------------
//返 回:指定矩阵元素的值,为TYPE型。
//----------------------------------------------------------------------
//编 者:耿 楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
TYPE* CMatrix::operator[](int Row)
{
return &(data[ColumnNumber*Row]);
}
////////////////////////////////////////////////////////////////////////
//操作符重载operator*=()
//----------------------------------------------------------------------
//基本功能:用于重载操作符*=,用一常数乘以当前矩阵各元素,并用得到的值对
// 当前矩阵赋值。
//----------------------------------------------------------------------
//参数说明:TYPE Number 与矩阵元素相乘的常量。
//----------------------------------------------------------------------
//返 回:无
//----------------------------------------------------------------------
//编 者:耿 楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
void CMatrix::operator*=(TYPE Number)
{
int i,j;
for(i = 0; i < RowNumber; i++)
for(j = 0; j < ColumnNumber; j++)
//对当前的元素乘以Number,并将结果赋与当前元素
data[i * ColumnNumber + j] *= Number;
}
////////////////////////////////////////////////////////////////////////
//操作符重载operator=()
//----------------------------------------------------------------------
//基本功能:用于重载操作符=,用另一个矩阵对当前矩阵赋值。
//----------------------------------------------------------------------
//参数说明:CMatrix& Other 另一个矩阵
//----------------------------------------------------------------------
//返 回:无
//----------------------------------------------------------------------
//编 者:耿 楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
void CMatrix::operator=(CMatrix& Other)
{
//两个矩阵行列数不相等,无法执行=操作,直接返回。
if(this->RowNumber != Other.GetRowNumber() || this->ColumnNumber != Other.GetColumnNumber())
return;
int i,j;
for(i = 0; i < RowNumber; i++)
for(j = 0; j < ColumnNumber; j++)
//赋值
data[i * ColumnNumber + j] = Other[i][j];
}
////////////////////////////////////////////////////////////////////////
//操作符重载operator+=()
//----------------------------------------------------------------------
//基本功能:用于重载操作符+=,用当前矩阵加上另一个矩阵,并用得到的值对当
// 前矩阵赋值。
//----------------------------------------------------------------------
//参数说明:CMatrix& Other 另一个矩阵
//----------------------------------------------------------------------
//返 回:无
//----------------------------------------------------------------------
//编 者:耿 楠
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -