mystack是指针 T是模板参数 这是什么用法? 不像析构函数啊
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
我用的mingGW 32bit的编译器,遇到了和你一样的问题,在数组上去调用一个Template模板的析构函数。 结果是无效,数组内的元素没有被删除成功,但是编译器也没有报错。
找到原因了。你的stack[top--].~T()在语义上是要销毁栈顶实体的,如果这个元素实体是内置类型如:int,double,内置指针类型等是无法销毁的,但是如果模板实参类型持有需要管理生命周期的资源呢?比如数组元素是一个自己定义的类类型而且这个类有它自己的析构函数,那么当我们stack[top--].~T()这样调用的时候实际上是显式调用栈顶类类型元素实体自己的析构函数。
这样数组里面的一个类类型元素实体就自己销毁了。
添加回答
举报
0/150
提交
取消