它刚好发生在我身上,我想知道在下列情况下如何释放资源.
class Base {
Resource *r;
public:
Base() { /* ... */ }
~Base() {
delete r;
}
};
class Derived : public Base {
public:
Derived() { /* ... */ }
~Derived() {
/* Suddenly something here throws! */
}
};
int main() {
try {
Derived d;
} catch(...) {
/* what happened with Base::r !? */
}
}
Run Code Online (Sandbox Code Playgroud)
如果派生类析构函数抛出,是否会调用基类析构函数?或者会有泄漏吗?
在析构函数中调用函数是一种好的做法,它在内部执行一些内存分配.因为这给了我访问违规和其他问题,假设
~Example(){
Stop();
}
Run Code Online (Sandbox Code Playgroud)
在这个函数中,Stop()执行各种操作并调用其他各种函数?这是一个好习惯.有人能帮忙吗?