我用这段代码在C++中试验析构函数:
#include <iostream>
struct temp
{
~temp() { std::cout << "Hello!" << std::endl; }
};
int main()
{
temp t;
t.~temp();
}我看到了“你好!”正在打印两次。析构函数的调用不应该释放对象吗?当析构函数超出作用域时,不应该再次调用它。还是有其他的概念呢?
(我不打算在实践中这样做。我只是想了解这里发生了什么。)
发布于 2012-08-09 21:18:52
你只是调用析构函数,实际上并没有释放任何内存(它是静态分配的)。如果使用new,然后删除,析构函数将只被调用一次。
https://stackoverflow.com/questions/11884168
复制相似问题