在析构函数中使用"this"

KAc*_*ion 11 c++ destructor this

使用this参数在析构函数中调用某个函数是否有效?函数不存储指针,但假设全功能对象.

Oli*_*rth 18

this 在析构函数中仍然有效.

但是,您需要记住,一旦对象被销毁,虚函数就不再像您期望的那样正常工作了; 参见例如在施工或销毁期间从不调用虚拟功能.本质上,每个析构函数完成时,都会修改对象的动态类型.

  • 他们**做**工作正常.只是正确工作功能的定义是不同的.我的意思是 - 他们按照设计工作. (4认同)
  • 或者无论如何,委员会对"正常工作"的定义在实践中并不是很有用.我确信有可能发明一些用例,你想要在基本ctor/dtor中调用虚函数的基类版本,并且委员会有一些类似的想法.否则他们会给予实现更多的自由,并且只是说它是UB来打电话.这可能会更有效,因为实现不必在每个dtor完成时继续调整vtable指针(或等效指针).事实上,我们支付我们不使用的东西. (2认同)