开发者社区> 问答> 正文

C++ STL 模板 析构函数

今天看STL源码分析,内部一个destroy函数
template
inline void destroy(T* pointer)
{
pointer->~T();
}
当T为int的时候,如:
int *ptr = new int;
destroy(ptr);
这样就可以编译通过,而直接ptr->~int();就报错。
这是为什么啊,求指点。

展开
收起
a123456678 2016-03-04 11:50:05 2485 0
3 条回答
写回答
取消 提交回答
  • 乐于学习与分析

    delete pointer 是先调用构造函数,再释放pointer指向的内存;
    pointer->~T() 只调用析构函数,但不释放pointer指向的内存,
    但是,~T()里面会释放对象的动态申请的内存。

    2019-07-17 18:52:04
    赞同 展开评论 打赏
  • 软件开发,安全加密

    delete pointer 是先调用构造函数,再释放pointer指向的内存;
    pointer->~T() 只调用析构函数,但不释放pointer指向的内存,
    但是,~T()里面会释放对象的动态申请的内存。

    2019-07-17 18:52:04
    赞同 展开评论 打赏
  • 因为int 是内置类型,系统并没有给他提供析构函数

    2019-07-17 18:52:04
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载