664得票24回答
Java有析构函数吗?

Java有析构函数吗?我似乎找不到任何相关文档。如果没有,我该如何实现相同的效果? 为了让我的问题更具体,我正在编写一个处理数据的应用程序,并且规范要求有一个“重置”按钮,可以将应用程序恢复到刚启动时的状态。但是,所有数据都必须“实时”存在,除非应用程序关闭或按下重置按钮。 通常作为C/C...

600得票11回答
如何正确清理 Python 对象?

class Package: def __init__(self): self.files = [] # ... def __del__(self): for file in self.files: os.un...

435得票7回答
我需要显式调用基类虚析构函数吗?

在C++中覆盖类(包含虚析构函数)时,我在继承类中重写了析构函数并将其声明为虚函数,但是我需要调用基类的析构函数吗? 如果需要,我想代码应该是这样的...MyChildClass::~MyChildClass() // virtual in header { // Call to b...

313得票18回答
如果不应该在析构函数中抛出异常,那么如何处理其中的错误?

大多数人认为在析构函数中抛出异常是不可取的,这样做会导致未定义的行为。Stroustrup指出:“vector 析构函数显式调用了每个元素的析构函数。这意味着如果元素的析构函数抛出异常,则 vector 的销毁失败......没有一种很好的方法来防止从析构函数抛出异常,因此,如果元素的析构函数...

226得票9回答
203得票8回答
何时应该创建析构函数?

例如:public class Person { public Person() { } ~Person() { } } 何时应手动创建析构函数?您何时需要创建析构函数?

191得票11回答
为什么在C++中需要纯虚析构函数?

我了解虚析构函数的必要性,但为什么需要一个纯虚析构函数呢?在C++文章中,作者提到使用纯虚析构函数来使类成为抽象类。 但我们可以通过将任何成员函数声明为纯虚函数来使类成为抽象类。 所以我的问题是: 我们什么时候会真正地使用纯虚析构函数?能否举个实际的例子? 当我们创建抽象类时,将析构函数也...

173得票2回答
C++中的纯虚析构函数

写下这样的代码是有问题的吗:class A { public: virtual ~A() = 0; }; 对于一个抽象基类,这样至少可以在MSVC编译通过...但它会在运行时崩溃吗?

169得票11回答
指向子类的指针进行删除操作会调用基类析构函数吗?

我有一个使用堆内存分配的字段的class A。Class A被实例化并作为指针字段存储在另一个类(class B)中。 当我完成使用类B的对象后,调用delete,我假设这会调用析构函数...但是这是否也调用class A的析构函数? 编辑: 从答案中我了解到以下内容(如果不正确,请编辑): ...

141得票10回答
C++析构函数在何时被调用?

基本问题:在C++中,程序何时调用类的析构函数?有人告诉我,每当一个对象超出其作用域或被delete掉时都会被调用。 更具体的问题: 1)如果对象是通过指针创建的,并且该指针稍后被删除或给予一个新地址来指向,假设没有其他指针指向这个对象,那么它所指向的对象会调用它的析构函数吗? 2)关于...