dan*_*jjl 13 c++ object destroy
我有一个需要摧毁自己的物体.
可以吗?
这个例子错了吗?
void Pawn::specialMoves(Coordinate const& from, Coordinate const& to, int passant)
{
/*...*/
m_board->replace(to, new Queen(m_colour));//replace pawn by queen
}
void Board::replace(Coordinate const &to, Piece* newPiece)
{
delete tile[to.x()][to.y()];
tile[to.x()][to.y()] = newPiece;
}
Run Code Online (Sandbox Code Playgroud)Oli*_*rth 29
是的,delete this从成员函数内部调用是合法的.但有非常很少一个很好的理由这样做(尤其是如果你正在写成语C++大部分内存管理工作应委托给容器,智能指针,等等).
你需要非常小心:
new(非new[])动态分配自杀对象.