假设我们有如下所示的类:类指针构件和异常处理
实施例1
int main() {
A a;
throw "error";
return 0;
}
:其利用它class A { public: A(); ~A(); void foo(); int* pointer; }; A::A() { pointer = new int; } A::~A() { delete pointer; } A::foo() { throw "error"; }
而以下的实施例
实施例2
int main() {
A a;
a.foo();
return 0;
}
在这两种情况下,会出现内存泄漏,至于析构函数永远不会由于未处理的异常被调用。
我的问题是责任是否与类的用户通过处理异常来调用析构函数有关:在第一个例子中,异常与类无关,所以我认为责任在于该类的用户,但在第二个例子中,类本身抛出错误 - 是否仍然由类的用户来确保正确处理异常,还是仅仅是该类本身的糟糕设计?
是的,这是真的,稍加修改。 –
修正了void throw();错误。感谢您指出:) – p0llard