为什么输出的向量运算的结果跟v2都一样,哪里有潜在问题吗?
#include
using namespace std;
class matrix{
private:
int *a;
int dim;
public:
matrix(){a=NULL;dim=0;}
matrix(int d)
{
dim=d;
a=new int[dim];
cout<<"输入向量"<for(int i=0;i>a[i];
}
void print()
{
cout<<"(";
for(int i=0;i-1;i++)
cout<",";
cout<-1]<<")"<matrix add(const matrix &v)
{
matrix temp;
temp=v;
temp.dim=v.dim;
for(int i=0;ireturn temp;
}
matrix sub(const matrix &v)
{
matrix temp;
temp=v;
temp.dim=v.dim;
for(int i=0;ireturn temp;
}
matrix mult(const matrix &v)
{
matrix temp;
temp=v;
temp.dim=v.dim;
for(int i=0;ireturn temp;
}
};
int main()
{
int dim=4;
//cout<<"请输入2*2阶矩阵的四个元素";
matrix v1(dim),v2(dim);
matrix Add=v1;matrix Sub=v1;matrix Mult=v1;
Add=v1.add(v2);Sub=v1.sub(v2);Mult=v1.mult(v2);
cout<<"v1=";v1.print();
cout<<"v2=";v2.print();
cout<<"v1+v2=";Add.print();
cout<<"v1-v2=";Sub.print();
cout<<"v1*v2=";Mult.print();
return 0;
}
类的赋值默认都是浅拷贝,在Add函数中,temp=v; 也就是temp与v中a都是指向同一个内存地址,对temp的a元素赋值也就是对v的a中元素赋值。程序有以下不足