在c+中使用运算符重载进行矩阵减法+; 我在C++中操作运算符重载,在这个程序中,我必须在运行时从用户获得矩阵大小和值,并对两个对象执行运算符重载(减法),并在第三个对象中分配两个第三对象和显示矩阵,代码低于 #include<ios
在c+中使用运算符重载进行矩阵减法+;在c+中使用运算符重载进行矩阵减法+; 我在C++中操作运算符重载,在这个程序中,我必须在运行时从用户获得矩阵大小和值,并对两个对象执行运算符重载(减法),并在第三个对象中分配两个第三对象和显示矩阵,代码低于 #include<ios,c++,matrix,operator-overloading,operators,dynamic-arrays,C++,Matrix,Operator Overloading,Operators,Dynamic Arrays,在c+中使用运算符重载进行矩阵减法+; 我在C++中操作运算符重载,在这个程序中,我必须在运行时从用户获得矩阵大小和值,并对两个对象执行运算符重载(减法),并在第三个对象中分配两个第三对象和显示矩阵,代码低于 #include<iostream> using std::cout; using std::cin; using std::endl; class matrix{ int **matrixList; int row; int col;
我在C++中操作运算符重载,在这个程序中,我必须在运行时从用户获得矩阵大小和值,并对两个对象执行运算符重载(减法),并在第三个对象中分配两个第三对象和显示矩阵,代码低于
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
class matrix{
int **matrixList;
int row;
int col;
public:
explicit matrix(){};
matrix(int**,int,int);
matrix operator-(matrix);
void getValues();
void displayMatrix();
};
matrix::matrix(int** matrixList,int row,int col){
this->matrixList=matrixList;
this->row=row;
this->col=col;
}
void matrix::getValues(){
for(int i=0;i<row;i++){
cout<<"\n enter value in row "<<i+1<<"\n";
for(int j=0;j<col;j++)
cin>>matrixList[i][j];
}
}
matrix matrix::operator-(matrix obj){
matrix tmpObj(matrixList,row,col);
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
tmpObj.matrixList[i][j]=this->matrixList[i][j]-obj.matrixList[i][j];
}
}
return tmpObj;
}
void matrix::displayMatrix(){
for(int i=0; i<row; i++){
for(int j=0;j<col; j++){
cout<<" "<<matrixList[i][j]<<" ";
}
cout<<endl;
}
}
int main(){
int **matrixPtr;
cout<<"enter no of rows : ";
int row;
cin>>row;
cout<<"enter no of columns : ";
int col;
cin>>col;
matrixPtr = new int *[row];
for(int i=0;i<row;i++){
matrixPtr[i] = new int[col];
}
matrix obj1(matrixPtr,row,col);
obj1.getValues();
matrix obj2(matrixPtr,row,col);
obj2.getValues();
matrix obj3(matrixPtr,row,col);
obj3=obj1-obj2;
obj3.displayMatrix();
for(int j=0;j<row;j++){
delete[] matrixPtr[j];
}
delete matrixPtr;
}
您是否分步调试了代码?请查看。丢失的副本使我胃痛。(特别是,因为您通过值传递对象,例如在
matrix::operator-()
中)-如果您使用了std::vector
而不是所有这些new[]
s,则可能是默认情况下您购买了正确的副本(免费),我意识到了一件更可怕的事情:你所有的matrix
对象都共享相同的值存储空间。(您总是将指针传递给main()
中唯一的matrixPtr
)A-A=[0]才有意义。。。要解决这一问题,我强烈建议matrix
自行和内部管理其值的存储。
0 0
0 0