2011-02-13 89 views
3

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

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

+0

你想在这里解决什么问题?什么情况下必须在开始时调用函数并首先返回所有这些函数? – Joe 2011-02-13 21:29:22

+2

@Joe:一种情况可能是日志记录,每次你进入/退出某个功能时你都想记录日志,并希望保存一些文字。嗯,这就是我认为至少...... – Xeo 2011-02-13 21:30:54

回答

6

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

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

一种不同的情况是你想要测试你的代码的位置,这就是探查器(例如)所做的事情,它可以让你在没有明确调用任何东西的情况下钩入代码。但我不认为这是你所追求的。

1

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