Other way to emulate static constructor behaviour is to use instance variable with private constructor and static factory method.
Cat* Cat::give_birth() {
static Cat *myone = 0;NULL;
if (myone == 0NULL) {
myone = new Cat();
}
return myone;
}