C++矩阵类中的问题为什么我的矩阵只能算加法,不能算减法减法就是把加法的加号改成减号.结果mian函数中的减法写错,改过
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/06 11:00:16
C++矩阵类中的问题
为什么我的矩阵只能算加法,不能算减法
减法就是把加法的加号改成减号.
结果
mian函数中的减法写错,改过之后依然这样
为什么我的矩阵只能算加法,不能算减法
减法就是把加法的加号改成减号.
结果
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];
同样的对于你所有重载的运算法函数都要做相似的修改,而且注意以后不要直接返回对象类型,而是要返回一个指针.
采用直接返回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];
同样的对于你所有重载的运算法函数都要做相似的修改,而且注意以后不要直接返回对象类型,而是要返回一个指针.
C++矩阵类中的问题为什么我的矩阵只能算加法,不能算减法减法就是把加法的加号改成减号.结果mian函数中的减法写错,改过
将下列式子中的减法化为加法,然后写成省略加号的和形式
怎样算有理数的加法和减法?
有理数的加法,减法法则?
20-(-3)-(+7)+(-2)中的减法改成加法并写成省略加号的代数和的形式应是 读作 或
有理数的加法和减法怎么算啊
初一一道有关有理数的加法与减法的问题,
有关分数加法和减法的数学问题
有理数的减法换成加法注意什么问题
计算一道小数减法时,错把减法当作加法来计算了,计算出来的结果是44.76,正确的结果应该是17.24,原来的被减
有理数的加法与减法的概念?
加法减法乘法除法的来历