在下面的代码中,我使用包装器对象临时存储内存中db的一些内容.我的问题很简单:
我可以确定析构函数被调用吗?我特别担心a)testCondition为真的情况,并且函数早期从tempObj构造范围的内部范围返回b)在执行此函数期间发生了一些运行时错误(在更高级别捕获)
(作为一个附带问题:这是暂时存储一些数据的好方法吗?在我的应用程序中,someFunc()是当前数据库的保存/导出功能.)
class TempStore
{
public:
TempStore() {/* delete some stuff from a db and store this in memory*/}
~TempStore() {/* write this stuff back into the db*/}
};
void someFunc(bool testCondition)
{
TempStore tempObj = TempStore();
// some code
if (testCondition)
return; //early return
// some more code
}
Run Code Online (Sandbox Code Playgroud)
当程序离开对象的范围时,将调用自动对象的析构函数.这包括从函数返回(早期或其他),并通过异常离开 - 只要处理异常.在异常的情况下,在处理异常之前在堆栈展开期间调用它.
在某些情况下可能不会调用它,包括:
longjmp; 这给出了未定义的行为;exit或引发导致终止的信号).| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |