62得票7回答
PHP中什么情况下不会调用__destruct函数?

class MyDestructableClass { function __construct() { print "\nIn constructor\n"; $this->name = "MyDestructableClass"; } ...

61得票7回答
你如何查询 pthread 是否仍在运行?

在我的析构函数中,我想要干净地销毁一个线程。 我的目标是等待线程执行完毕,然后再销毁该线程。 关于查询 pthread 状态的唯一信息是 pthread_attr_setdetachstate,但这只能告诉你线程是否为: PTHREAD_CREATE_DETACHED PTHREAD_...

60得票1回答
C++ 20中的“销毁操作符delete”是什么?

C++20引入了“摧毁operator delete”:这是一种新的operator delete重载形式,它接受一个标签类型std::destroying_delete_t参数。 这到底是什么以及何时有用?

58得票1回答
当一个类被删除时,Qt中的信号是否会自动断开连接?

Qt是否会自动删除对象之间的连接,当其中一方被删除时? 例如connect(A.. , B..),当A (一个指针)被删除或B被删除时,连接是否会断开? 在析构函数中明确使用disconnect是否是必要的?

55得票5回答
析构函数中使用“=delete”的作用。

考虑以下类: Consider the following class:struct S { ~S() = delete; }; 简单来说,我不能像这样创建实例:S s{};因为我无法销毁它们。 正如评论中提到的,我仍然可以通过这样做创建实例:S *s = new S;但我也无法删除它。 因此...

55得票2回答
如何在clang中处理“exit-time destructor”警告?

在我的C++11代码中,我遇到了以下情况的clang警告:“Declaration requires an exit-time destructor”:static const std::map<int, const someStruct> mymap = { {1, { ...

54得票5回答
跳出一个块:析构函数会被调用吗?

考虑以下代码:void foo() { { CSomeClass bar; // Some code here... goto label; // and here... } label: // a...

54得票7回答
C++中的析构函数与向量、指针相关问题

据我所知,在析构函数中应该销毁使用new创建的所有内容,并关闭已打开的文件流和其他流。但是,我对C++中的其他对象存在一些疑虑: std::vector和std::string:它们会自动销毁吗? 如果我有以下内容:std::vector<myClass*> 指向类的指针。当...

53得票8回答
RAII与异常处理

在C++中,我们越多地使用RAII,就越发现自己需要执行非平凡的清理操作。现在,如果清理(finalization,或者你想怎么称呼它)失败了,那么异常是让上层知道我们的清理问题的唯一方法。但是,抛出析构函数是个坏主意,因为在堆栈展开期间可能会抛出异常。std::uncaught_except...

53得票3回答
如果发出SIGINT或SIGSTP信号,析构函数会被调用吗?

我有一个拥有用户自定义析构函数的类。如果在程序运行时最初实例化该类,然后发出SIGINT(在unix中使用CTRL+C),析构函数会被调用吗?对于SIGSTP(在unix中使用CTRL+Z),行为如何? 我有一个带有用户定义析构函数的类。如果该类在程序运行时首先被实例化,并且在程序运行期间发...