一个C++程序,为什么无法输出结果

#include<iostream>
using std::cout;
using std::cin;
using std::endl;
class Matrix
{
int n,array[100][100];
public:
Matrix()//默认构造函数,默认创建一个100行100列方阵,数值全为0
{
int n=100;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
array[i][j]=0;
}
}
}
Matrix(int n,int a[100][100])//带参数的构造函数
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
array[i][j]=a[i][j];
}
}
}
friend Matrix operator + (Matrix &m1,Matrix &m2)//重载运算符+,计算两个矩阵相加
{
Matrix temp;
int i,j;
cout<<"方阵m1+方阵m2=:"<<endl;
for(i=0;i<m1.n;i++)
{
for(j=0;j<m1.n;j++)
{
temp.array[i][j]=m1.array[i][j]+m2.array[i][j];
}
}
return temp;
}
friend Matrix operator - (Matrix &m1,Matrix &m2)//重载运算符-,计算两个矩阵相减
{
Matrix temp;
int i,j;
cout<<"方阵m1-方阵m2=:"<<endl;
for(i=0;i<m1.n;i++)
{
for(j=0;j<m1.n;j++)
{
temp.array[i][j]=m1.array[i][j]-m2.array[i][j];
}
}
return temp;
}
friend Matrix operator * (Matrix &m1,Matrix &m2)//重载运算符*,计算两个矩阵相乘
{
Matrix temp;
int i,j,k;

cout<<"方阵m1*方阵m2=:"<<endl;
for(i=0;i<m1.n;i++)
{
for(j=0;j<m1.n;j++)
{
temp.array[i][j]=0;
for(k=0;k<m1.n;k++)
{
temp.array[i][j]=temp.array[i][j]+m1.array[i][k]*m2.array[k][j];
}
}
}
return temp;
}
friend void Print(Matrix &m)//输出经运算后的方阵
{
int i,j;
for(i=0;i<m.n;i++)
{
for(j=0;j<m.n;j++)
{
cout<<m.array[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
};
int main()
{
int N,a[100][100],b[100][100],i,j;
Matrix m3,m4,m5;
cout<<"请输入方阵的阶数:"; cin>>N;
while(N!=0)//输入为0,则退出程序
{
while(N<2)
{
cout<<"您输入的数据有错误!请重新输入:"; cin>>N;
}
cout<<"请输入第1个方阵的数据:"<<endl;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cin>>a[i][j];
}
}
Matrix m1(N,a);
cout<<"请输入第2个方阵的数据:"<<endl;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cin>>b[i][j];
}
}
Matrix m2(N,b);
m3=m1+m2;
Print(m3);
m4=m1-m2;
Print(m4);
m5=m1*m2;
Print(m5);
cout<<"请输入方阵的阶数:"; cin>>N;//输入为0,则退出程序
}
return 0;
}

错误一大堆,首先构造函数里面n就没初始化过,其次输入n的时候就没给n赋过值,没拷贝构造函数,返回就是两个不一样的值了。所以print根本无法打印。

最想吐槽的是:
Matrix()//默认构造函数
{
int n=100; //你这到底是在定义还是在赋值呢???
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
array[i][j]=0;
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-12
Print(Matrix &m)函数中m.n没值