好的,我有这个构造函数:
Board::Board(int nRows, int nCols){
numRows=nRows;
numCols=nCols;
int** board=new int*[numRows];
for(int i=0; i<numRows; i++){
board[i]=new int[numCols];
for(int j=0; j<numCols; j++){
board[i] [j]=-1;
}
}
}
其中 board 是一个行数数组,其中数组中的每个项目都指向一个长度为列数的数组,所以这个 board 被设置并初始化为值 -1。我的问题是我应该如何为这样的情况实现我的析构函数,我理解创建每个指针数组的概念,但在破坏中我仍然有点迷茫。感谢您的帮助!
最佳答案
第一点:不要这样做。只是不要。使用 std::vector
存储数据,并使用用户运算符重载以允许客户端使用 2D 维度对其进行索引。
就是说,无论如何你可能会坚持这样做,所以你也可以这样做,至少知道基本的想法:把你原来的 new
倒过来说话。所以,您开始于:
int** board=new int*[numRows];
for(int i=0; i<numRows; i++){
board[i]=new int[numCols];
相反,您首先要删除单个项目:
for (int i=0; i<numRows; i++)
delete [] board[i];
然后删除外部指针:
delete [] board;
不过我要重复一遍:使用 std::vector
for the storage 会更简洁.
关于c++ - 数组指针数组的析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322194/