- 局部对象
当对象所在作用域结束之后,销毁栈空间,此时析构函数被调用。
举例:
函数返回时自动调用析构函数:
- 堆对象
调用析构代理函数来处理析构函数:
为什么使用析构代理函数来调用析构函数?考虑到如果delete的对象是一个对象数组,可以使用析构代理函数依次析构所有的对象。举例:
调用了构造代理函数:
vector deleting destructor函数中先对标志位进行判断:
如果没有跳转,表明delete的是一个数组,则会调用调用析构代理函数对对象进行逐一的析构。如果进行了跳转,则只进行一次析构函数的调用。