gpt4 book ai didi

c++ - 显式调用时,析构函数被调用两次

转载 作者:IT老高 更新时间:2023-10-28 21:43:51 27 4
gpt4 key购买 nike

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

#include <iostream>

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

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

我看到“你好!”正在打印两次。析构函数的调用不应该释放对象并且当它超出范围时不应该再次调用析构函数?还是有什么别的概念?

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

最佳答案

它发生是因为你告诉它发生。当变量超出范围时,自动变量的析构函数总是被调用。你也叫它。总共是两个电话。

调用对象的析构函数并不意味着 C++ 不再调用它,因为在正常执行中不需要跟踪。

解决方案是永远不要手动调用你的析构函数。

关于c++ - 显式调用时,析构函数被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884168/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com