前言
博主本人为C++菜鸟一只,本篇博客也是第一次写,主要目的用于自己mark,如有错误欢迎指出
本博客代码为我做C++实验时的代码,由于自己是菜鸟,所以代码内容掌握的也不是很熟。
在此记下此篇,待到日后查看也是属于自己青春的一部分吧。
正文
整个工程分为头文件,source,以及main构成。
工程的目的为实现对矩阵运算符‘+’,‘-’,‘*’,‘==’,‘!=’,‘<<’和‘>>’的重载,并在main中测试其情况。
以下为头文件
//Matrix.h
#ifndef MATRIX_H
#define MATRIX_H
#include <iostream>
using namespace std;
class Matrix
{
public:
Matrix operator + (Matrix&a);//重载 +
Matrix operator - (Matrix&b);//重载 -
Matrix operator * (Matrix&c);//重载 *
bool operator == (Matrix&d);//重载 ==
bool operator != (Matrix&e);//重载 !=
friend ostream& operator << (ostream&,Matrix&);//重载 <<
friend istream& operator>>(istream&,Matrix&);//重载 >>
void setMatrix(int a, int b);//设置矩阵行列
private:
int row;
int col;
int matrix[200][200];
};
#endif
关于 void setMatrix(int a, int b); 其实这个函数可以不设置,利用构造函数可以完成该功能,甚至更完美。但我有些小懒,就不想去修改了,如果出事的话…QAQ还是希望不会出事吧。
还有就是,矩阵我设置成了200*200,其实可以利用new调用动态内存来更好的实现,但由于我太菜,不想去用二重指针,故放弃了这个方案。
以下为cpp文件
//Matrix.cpp
#include <iostream>
#include "Matrix.h"
using namespace std;
void Matrix::setMatrix(int a, int b)//构造函数可以取代这个
{
row=a;
col=b;
}
Matrix Matrix::operator + (Matrix &a)//重载 +
{
if (row!=a.row||col!=a.col)
{
throw"这两个矩阵不可相加";
}
抛出异常,之所以使用这个,是因为没法cout<<“错误”;之后return 0强制退出,因为返回类型是矩阵,我当时没有尝试利用exit()函数…(果然我太菜了QAQ)
else//矩阵元素相加
{
Matrix sum;//创建新矩阵,为接下来返回矩阵用
sum.row=row;
sum.col=col;
for(int i=0; i<sum.row; i+&#