作业帮 > 综合 > 作业

C++矩阵类中的问题为什么我的矩阵只能算加法,不能算减法减法就是把加法的加号改成减号.结果mian函数中的减法写错,改过

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/06/14 00:07:04
C++矩阵类中的问题
为什么我的矩阵只能算加法,不能算减法



减法就是把加法的加号改成减号.
结果

mian函数中的减法写错,改过之后依然这样
你返回值的时候采用的是Matrix类型,在C++的函数中,对象的建立相比一般类型而言,需要更多的内存空间(尤其是你这种建立方式).
采用直接返回Matrix的方式,对象时建立在栈上的,而栈的空间实际上是十分有限的,所以会出现bad_alloc的错误,就是提示你内存分配不出来了.所以你要改用堆内存的方式.(具体堆和栈内存的区别请自行百度,内容比较多)
所以你的代码建议改成这样,Matrix *Matrix::operator-(const Matrix &right),这样返回值就是一个指针了,不需要太多的栈内存.
然后函数中的对象申请改成Matrix *extra=new Matrix(row,line);下面的具体运算部分改成
*extra.ptr[i*line+j]=ptr[i*line+j]-right[i*line+j];
同样的对于你所有重载的运算法函数都要做相似的修改,而且注意以后不要直接返回对象类型,而是要返回一个指针.