Luk*_*ier 1 c++ arrays pointers destructor
好的,我有这个构造函数:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
其中board是一个行数数组,其中数组中的每一项都指向一个长度为列数的数组,所以这个board被设置并初始化为-1的值。我的问题是我应该如何为这样的情况实现我的析构函数,我理解创建每个指针数组的概念,但在销毁过程中我仍然有点迷茫。任何帮助表示赞赏!
第一点:不要做。只是不要。使用 anstd::vector来存储数据,并使用用户运算符重载以允许客户端使用 2D 维度对其进行索引。
也就是说,无论如何你可能会坚持这样做,所以你最好至少知道基本思想:取你的原始news,然后将它们反转。所以,你开始:
int** board=new int*[numRows];
for(int i=0; i<numRows; i++){
board[i]=new int[numCols];
Run Code Online (Sandbox Code Playgroud)
反过来,您首先删除单个项目:
for (int i=0; i<numRows; i++)
delete [] board[i];
Run Code Online (Sandbox Code Playgroud)
然后删除外部指针:
delete [] board;
Run Code Online (Sandbox Code Playgroud)
不过我要重复一遍:只使用 astd::vector作为 storage会更干净。