请问 mystack[top--].~T();,这是什么用法?

mystack是指针 T是模板参数 这是什么用法? 不像析构函数啊

莫回无
浏览 245回答 2
2回答

呼唤远方

我用的mingGW 32bit的编译器,遇到了和你一样的问题,在数组上去调用一个Template模板的析构函数。 结果是无效,数组内的元素没有被删除成功,但是编译器也没有报错。找到原因了。你的stack[top--].~T()在语义上是要销毁栈顶实体的,如果这个元素实体是内置类型如:int,double,内置指针类型等是无法销毁的,但是如果模板实参类型持有需要管理生命周期的资源呢?比如数组元素是一个自己定义的类类型而且这个类有它自己的析构函数,那么当我们stack[top--].~T()这样调用的时候实际上是显式调用栈顶类类型元素实体自己的析构函数。这样数组里面的一个类类型元素实体就自己销毁了。

慕的地8271018

首先调用析构函数~T()释放top的内存,然后top--将top向下平移一个。代码主要用于栈的删除操作。
打开App,查看更多内容
随时随地看视频慕课网APP