C++のこういういうところが素敵じゃね?

たとえば、
bar.h

class CNode {
public:
    CNode(){
        cout << "bar CNode::constructor" << endl;
    }
    virtual ~CNode();// 実装し忘れ...
};

foo.h

class CNode {
public:
    CNode(){
        cout << "foo CNode::constructor" << endl;
    }
    virtual ~CNode();
};

foo.cpp

CNode::~CNode()
{
    cout << "foo CNode::destructor" << endl;
}

とか、
たまたま名前空間上で名前が衝突していた場合、
ヘッダbar.h上にあるCNodeのデストラクタは定義されていないが、
「foo.cppにCNode::~CNode()が存在するので」それが使われる。

要するに、barのCNodeはコンストラクタはbar、デストラクタはfooのものが呼ばれるクラスになる。

\(^o^)/
いや、
barでデストラクタを宣言しておいて実装しないのがいけないんだけどね。
orz...
(リンク時に解決するせいっちゃせいなんだけど)