C++:我可以在析构函数中安全地使用它吗?

Fer*_*eak 2 c++ destructor this

今天的问题是:我可以this在析构函数中使用,如果是,我必须遵守的限制是什么......例如,我知道我不应该对基类做任何事情,因为它们已经消失了.但是还有其他限制吗?我可以安全地假设this(作为指针...即内存地址......一个数字)与构造函数中的相同吗?

Mik*_*our 7

我可以this在析构函数中使用吗?

是.

例如,我知道我不应该对基类做任何事情,因为它们已经消失了.

不,此时基类仍然完好无损.派生类的成员(可能还有其他基类)已经被销毁,但是这个类的成员和基类一直存在,直到析构函数完成之后.

但是还有其他限制吗?

根据当前被销毁的类调度虚函数,而不是前一个派生类.所以要小心调用它们,特别是不要在这个类中调用任何纯虚函数.

不要强制this转换为派生类型,因为它不再是该类型的有效对象.

delete this出于显而易见的原因,你无法从析构函数中获取.

我可以安全地假设这个(作为指针...即内存地址......一个数字)与构造函数中的相同吗?

是的,对象的地址在其构造函数运行之前保持不变,直到其析构函数运行之后.