首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >析构函数在显式调用时被调用两次

析构函数在显式调用时被调用两次
EN

Stack Overflow用户
提问于 2012-08-09 21:08:12
回答 10查看 8.6K关注 0票数 23

我用这段代码在C++中试验析构函数:

代码语言:javascript
复制
#include <iostream>

struct temp
{
    ~temp() { std::cout << "Hello!" << std::endl; }
};

int main()
{
    temp t;
    t.~temp();
}

我看到了“你好!”正在打印两次。析构函数的调用不应该释放对象吗?当析构函数超出作用域时,不应该再次调用它。还是有其他的概念呢?

(我不打算在实践中这样做。我只是想了解这里发生了什么。)

EN

Stack Overflow用户

发布于 2012-08-09 21:18:52

你只是调用析构函数,实际上并没有释放任何内存(它是静态分配的)。如果使用new,然后删除,析构函数将只被调用一次。

票数 1
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11884168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档