52得票8回答
如果构造函数抛出异常,析构函数会被调用吗?

寻找C#和C++的答案。(在C#中,用'finalizer'来替换'destructor')

52得票4回答
JavaScript 对象模型中的析构函数等价物

由于我过去曾处理过 JavaScript 的奇怪“对象模型”,我假设不存在析构函数。我的搜索结果不太成功,所以你们是我最后的希望。如何在实例销毁时执行操作?

52得票5回答
析构函数可以递归吗?

这个程序是否定义良好,如果不是,为什么呢?#include <iostream> #include <new> struct X { int cnt; X (int i) : cnt(i) {} ~X() { std:...

49得票8回答
在什么情况下C++析构函数不会被调用?

我知道我的析构函数会在正常的栈展开和抛出异常时被调用,但在调用exit()函数时不会被调用。 还有其他情况会导致析构函数不被调用吗?比如SIGINT或SIGSEGV等信号。我猜想对于SIGSEGV,析构函数不会被调用,但对于SIGINT会被调用。如何知道哪些信号会展开堆栈? 还有其他情况会...

49得票5回答
静态终结器

如何进行静态终结? 并没有静态析构函数。在默认域中不会引发 AppDomain.DomainUnload 事件。由于AppDomain.ProcessExit 事件将总时间(默认设置为三秒)在所有事件处理程序之间共享,因此它实际上无法使用。

49得票5回答
当一个对象超出其作用域时,析构函数会被调用吗?

例如:int main() { Foo *leedle = new Foo(); return 0; } class Foo { private: somePointer* bar; public: Foo(); ~Foo(); }; Foo::...

49得票2回答
显式调用析构函数

我知道在大多数情况下,我们不应该显式地调用析构函数。然而,我在C++11标准N3485第13.4.5节的模板参数示例中看到了一个例外。 An explicit destructor call for an object that has a type that is a class t...

49得票3回答
为什么在C++11中我们需要使用virtual ~A() = default;而不是virtual ~A() {}?

在 Stack Overflow 的帖子 Checking the object type in C++11 中,我有以下评论: 在 C++11 中,您实际上会想要执行 virtual ~A() = default;。否则,您将失去隐式移动构造函数。 virtual ~A() = de...

49得票6回答
在C++中如何从析构函数中恢复对象?

免责声明:我知道这是不好的设计,我只是出于好奇问问题,以便更深入地了解C++中析构函数的工作原理。 在C#中,可以在类的析构函数中编写GC.KeepAlive(this) (请参见下面的编辑),这意味着即使析构函数调用完成后,对象仍将存活在内存中。 C++的设计是否允许从析构函数中复活对象...

48得票3回答
如何向一个未命名的类添加构造函数/析构函数?

在无名类中是否有一种声明构造函数或析构函数的方法?考虑以下情况void f() { struct { // some implementation } inst1, inst2; // f implementation - usage of insta...