summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/RefCounted.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/RefCounted.h')
-rw-r--r--cpp/src/qpid/RefCounted.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/cpp/src/qpid/RefCounted.h b/cpp/src/qpid/RefCounted.h
index 10b5e4afcc..e7a9bf31c1 100644
--- a/cpp/src/qpid/RefCounted.h
+++ b/cpp/src/qpid/RefCounted.h
@@ -39,11 +39,13 @@ class RefCounted : boost::noncopyable {
public:
RefCounted() : count(0) {}
void addRef() const { ++count; }
- void release() const { if (--count==0) delete this; }
+ void release() const { if (--count==0) released(); }
long refCount() { return count; }
protected:
virtual ~RefCounted() {};
+ // Allow subclasses to over-ride behavior when refcount reaches 0.
+ virtual void released() const { delete this; }
};