[C++]「インターフェイスと実装の分離」
つうことで、こんなのはいかがか。

--Class.h--
class Class
{
virtual void func1() = 0;
virtual void func2() = 0;
static Class* create();
};

--Class.cpp--
#include "Class.h"

class ClassImpl : public Class
{
virtual void func1(); // func1実装
virtual void func2(); // func2実装

//メンバ変数など
};

void ClassImpl::func1() {
...
}

void ClassImpl::func2() {
...
}

Class* Class::create()
{
return new ClassImpl();
}

Factoryクラスを用意するまでもないとき、こんなのはどうでしょう?