我有一个需要自我毁灭的物体。
能做到吗?
-
例子有错吗?
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;
}
是的,打电话是合法的delete this
从成员函数内部。但有very很少有这样做的充分理由(特别是如果您正在编写惯用的 C++,其中大多数内存管理任务应委托给容器、智能指针等)。
你需要成为very小心:
- 自杀对象必须是通过动态分配的
new
(not new[]
).
- 一旦一个对象自杀了,它做任何依赖于自身存在的事情(它不能再访问自己的成员变量,调用自己的虚函数等)都是未定义的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)