在返回时调用函数的方法

时间:2011-02-13 21:27:17

标签: c++

每当我有两个特定的函数,一个我想在函数输入时调用的函数,以及一个我想在函数中返回时调用的函数,我通常使用一个辅助类并将我想要调用的函数放在构造函数中和析构函数 - 然后在函数的开头实例化该类的对象。我这样做主要是因为我不知道如何避免在返回语句之前将返回的函数放在我想要的函数上。

我想知道是否有任何替代或更好的方法来处理这个问题。我没经验,所以我甚至不知道我的方法是否被认为是“可怕的编程”。

2 个答案:

答案 0 :(得分:6)

这是一种相当常见的技术。更具体地说,析构函数将在离开初始化对象的范围时被调用,该范围可能在函数返回之前。其中一个用途是使用锁,其中一个辅助对象用于在销毁时解锁。

这是确保在离开范围时在所有情况下调用函数的唯一方法,包括抛出异常时。

一种不同的情况是您想要检测代码,这就是分析器(例如)所做的事情,它允许您挂钩代码而无需实际显式调用任何内容。但我认为这不是你想要的。

答案 1 :(得分:1)

这是执行此操作的标准C ++方法。在早期的C with Classes中,曾经有一个特定的功能来指定在各种函数的进入和退出时自动调用的函数,但它们被删除了,有利于使用这种方法的对象。