operator delete

今日のアホなプログラム。

// このクラスを継承すると、
// メモリプールからメモリが確保されるようになる。
class memory_pool{
public:
    void* operator new( size_t size );
    void operator delete( void* p );
    void* operator new( size_t size );
    void operator delete( void* p );
};

class Base{
public:
    virtual ~Base(){};
    virtual void func() = 0;
};

class Inherit : public Base{
public:
    virtual void func();
};

// このクラスはメモリプールから確保
class Inherit2 : public Base , public memory_pool{
public:
    virtual void func();
};
Base* var = new Inherit();
Base* var2 = new Inherit2();

...

delete var;
delete var2;