class Arry
{
private:
int row;
int col;
int *arrp;
public:
Arry(int x = 0, int y = 0);
~Arry();
int & operator()(int x=0, int y =0);
int getrow();
int getcol();
};
Arry::Arry(int x, int y)
{
if(x && y )
{
this ->row = x;
this ->col = y;
arrp = new int[row * col];
memset(arrp, 0, sizeof(int)*(row*col));
}
}
Arry::~Arry()
{
if(arrp)
{
delete []arrp;
arrp = NULL;
}
}
int & Arry::operator()(int x, int y)
{
if((x >= row || x < 0) && (y >= col || y < 0))
{
cout<<"erro "<<"ϱêÔ½½ç"<<endl;
}
return *(arrp + x*col + y);
}
int Arry::getrow()
{
return row;
}
int Arry::getcol()
{
return col;
}
void main()
{
int i=0;
int j=0;
Arry arr1(3,3);
for( i; i < arr1.getrow(); i++)
{
for(j; j < arr1.getcol(); j++)
{
cin >> arr1(i,j);
}
}
for(i = 0; i < arr1.getrow(); i++)
{
for(j = 0; j < arr1.getcol(); j++)
{
cout<<arr1(i, j)<<'\t';
}
cout<<endl;
}
}
输入:1 2 3 4 5 6 7 8 9
输出:1 2 3
0 0 0
0 0 0
但若把主函数改为:
void main()
{
int i;
int j;
Arry arr1(3,3);
for( i=0; i < arr1.getrow(); i++)
{
for(j=0; j < arr1.getcol(); j++)
{
cin >> arr1(i,j);
}
}
for(i = 0; i < arr1.getrow(); i++)
{
for(j = 0; j < arr1.getcol(); j++)
{
cout<<arr1(i, j)<<'\t';
}
cout<<endl;
}
}
输入:1 2 3 4 5 6 7 8 9
输出:1 2 3
4 5 6
7 8 9
请问各位这是为何?求指教