分配二维数组的问题。
类定义:
class TwoDimensionalArray
{
public:
TwoDimensionalArray(int rows=2,int cols=2);
~TwoDimensionalArray();
private:
int **ptrArray;
int rows,cols; //行、列
};
类实现:
TwoDimensionalArray::TwoDimensionalArray(int rows,int cols):rows(rows),cols(cols)
{
ptrArray=new int *[rows];
for(int i=0;i<rows;++i)
{
ptrArray[i]=new int [cols];
}
}
TwoDimensionalArray::~TwoDimensionalArray()
{
for(int i=0;i<rows;++i)
{
delete [] ptrArray[i];
}
delete [] ptrArray;
}
请问这样分配和回收对吗?特别是删除时像这样操作有删除干净吗?
问题点数:10、回复次数:8Top
1 楼ugg(逸学堂(exuetang.net))回复于 2006-03-12 21:50:30 得分 2
正确,楼主放心好了Top
2 楼wzjall(风)回复于 2006-03-12 22:14:21 得分 2
对呀!Top
3 楼popoxx(我笑)回复于 2006-03-13 20:28:05 得分 2
new 和delete用的根书上的程序一模一样啊^_^Top
4 楼zhengviolet()回复于 2006-03-13 20:45:59 得分 0
请问楼主这个类怎么用呀?
谢谢!Top
5 楼zh2817()回复于 2006-03-13 20:56:45 得分 1
感觉不错Top
6 楼aya331(菜菜小鸟)回复于 2006-03-14 18:35:08 得分 0
请问楼主这个类怎么用呀?
谢谢!
=========================
不好意思,这么晚才来。
这是用了模拟一个二维数组的类,在扩展一些重载运算符就可以了。Top
7 楼beginnow()回复于 2006-03-15 12:35:45 得分 2
正确的前提是有足够的内存,当分配失败的时,析构的时候就会有问题了,最好加上断言Top
8 楼healer_kx(甘草(楼主揭贴吧,我们这些上班灌水的也不容易))回复于 2006-03-15 12:43:47 得分 1
int* p = new int[n * m];
这样分配二维数组好不?
p[x * m + y]对内容进行定位。
PS:不要使用看似正统,其实垃圾的方式了。Top




