在下面的代码中,我使用一个“包装对象”来暂时将一些来自数据库的东西存储在内存中。我的问题很简单:
我可以确定析构函数被调用吗?我特别担心以下情况: a) testCondition 为 true,并且函数从构造 tempObj 的作用域的内部作用域返回 b) 在执行此函数时发生某些运行时错误(在较高级别上捕获)
(作为附带问题:这是临时存储数据的好方法吗?在我的应用程序中,someFunc() 是当前数据库的保存/导出函数。)
我可以确定析构函数被调用吗?我特别担心以下情况: a) testCondition 为 true,并且函数从构造 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
}
TempStore
的析构函数。这被称为“资源获取即初始化”(RAII)习语,并且是现代C ++的基石。 - In silico