[antlr-interest] "finally" blocks
Paul J. Lucas
pauljlucas at mac.com
Mon Jan 17 15:13:55 PST 2005
On Mon, 17 Jan 2005, Christopher Schultz wrote:
> I think that's a flawed comparison. Destructors are in C++ what finalizers
> are in Java. A "finally" block is different.
Yes, but I can use destructors in C++ to implement "finally"
blocks.
class bool_flag {
public:
bool_flag( bool &b ) : m_b( b ) {
m_b = true;
}
~bool_flag() {
m_b = false;
}
private:
bool &m_b;
};
bool my_flag;
void f() {
bool_flag( my_flag );
// ...
}
No matter how f() exits, the "finally" of setting my_flag to
false will always be done. Hence, destructors can be used to
implement "finally" (that's why C++ doesn't need "finally"
explicitly) but Java having "finally" can't get you
destructors.
- Paul
More information about the antlr-interest
mailing list