问题标签 [destructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
527 浏览

c++ - C++ 析构函数问题

关于下面的示例代码,为什么基类的析构函数被调用了两次?

以下是程序运行时的输出示例:

0 投票
1 回答
1404 浏览

wpf - WPF 析构函数

有谁知道为 XBAP 应用程序编写析构函数的正确方法?

0 投票
4 回答
6862 浏览

python - 在 Python 中删除模块时调用的方法

有没有一种方法可以添加到我的模块中,在破坏类时会被调用?

我们有一个简单的类,它只有静态成员函数,卸载模块时需要清理数据库连接。

希望对于__del__没有实例的模块或类有一种方法吗?

0 投票
2 回答
4640 浏览

python - 在对象销毁时清理内部 pysqlite 连接

我有一个带有内部数据库连接的对象,该对象在其整个生命周期内都处于活动状态。在程序运行结束时,必须提交并关闭连接。到目前为止,我使用了显式close方法,但这有点麻烦,尤其是在调用代码中可能发生异常时。

我正在考虑使用__del__关闭的方法,但是在网上阅读了一些之后,我有一些担忧。这是一个有效的使用模式吗?我可以确定内部资源将被__del__正确释放吗?

这次讨论提出了类似的问题,但没有找到令人满意的答案。我不想有一个显式的close方法,并且 usingwith不是一个选项,因为我的对象没有像 open-play-close 那样简单地使用,而是作为另一个使用它的更大对象的成员保存在 GUI 中运行时。

C++ 有完美的析构函数,可以安全地释放资源,所以我想 Python 也有一些共识。出于某种原因,情况似乎并非如此,社区中的许多人发誓反对__del__. 那有什么办法呢?

0 投票
1 回答
1708 浏览

wcf - 为什么当我关闭客户端应用程序而不在客户端调用“关闭”方法时 WCF 不销毁对象?

我有一个 net tcp WCF 服务如下

当我在客户端创建一个对象如下

构造函数被调用,但是当我关闭客户端应用程序而不调用close mehotd时,没有调用析构函数?为什么?这是否意味着服务对象仍然在服务器上工作?

0 投票
7 回答
34356 浏览

c++ - “空”构造函数或析构函数会与生成的构造函数做同样的事情吗?

假设我们有一个(玩具)C++ 类,如下所示:

由于没有定义析构函数,C++ 编译器应该为 class 自动创建一个析构函数Foo。如果析构函数不需要清理任何动态分配的内存(也就是说,我们可以合理地依赖编译器给我们的析构函数),将定义一个空的析构函数,即。

和编译器生成的一样吗?一个空的构造函数怎么样——也就是说,Foo::Foo() { }

如果存在差异,它们存在于哪里?如果不是,一种方法是否优于另一种方法?

0 投票
11 回答
14350 浏览

c++ - 调用析构函数会显式地完全销毁对象吗?

如果我显式调用析构函数( myObject.~Object() ),这是否可以确保该对象将被适当地销毁(调用所有子析构函数)?

好的一些代码:

我知道我可以删除该对象,但我不想这样做。我想将分配的内存放在手边,作为一项重要的优化。

谢谢!

0 投票
3 回答
70717 浏览

c# - 在 C# 中,类中的析构函数和 Finalize 方法有什么区别?

类中的析构函数和 Finalize 方法之间有什么区别(如果有的话)?

我最近发现 Visual Studio 2008 将析构函数视为 Finalize 方法的同义词,这意味着 Visual Studio 不会让您在一个类中同时定义这两种方法。

例如,下面的代码片段:

在析构函数中调用 Finalize 时出现以下错误:

以下方法或属性之间的调用不明确:“TestFinalize.~TestFinalize()”和“TestFinalize.Finalize()”

如果对 Finalize 的调用被注释掉,则会出现以下错误:

类型“ManagementConcepts.Service.TestFinalize”已经定义了一个名为“Finalize”的成员,具有相同的参数类型

0 投票
2 回答
381 浏览

c++ - 如何在 C++ 中将方法指定为析构函数而不是构造函数?

如何在 C++ 中将方法指定为析构函数而不是构造函数?这让我非常困惑。我分不清两者的区别。

0 投票
7 回答
279 浏览

c++ - 析构问题

这是我的 addCard 函数,它以 playCard 作为参数,然后将其自身的地址传递给分配的指向 playCard 对象的指针数组。

现在,当我运行我的程序时,它运行良好,但在调用析构函数时崩溃。

是不是因为我只在 addCard 函数中交出了playingCard 对象的地址而崩溃了。它应该是一个指针吗?