2 akiller 123 akiller_123 于 2014.10.12 10:13 提问

程序运行结果和预料的不一样

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
请问各位这是为何?求指教

Csdn user default icon
上传中...
上传图片
插入图片