>>669
newをオーバーロードするとoperator newの中身を処理した後、
その戻り値をthisポインタにしてコンストラクタが呼ばれる。(newの結果もそのポインタになる。)
operator newの戻り値はクラスのポインタではなくvoid *となっているのは、
operator newを行った時点では(コンストラクタが呼ばれていないので)まだインスタンスは出来上がっていないから。

operator deleteは逆にまずデストラクタを呼び出してからoperator deleteが呼ばれる。
デストラクタを呼んだ後だからもはやただのメモリブロックを表すに過ぎないからこの引数もvoid *。

operator new[]/delete[]も同様。

もちろんhoge::operator new()とでもして呼べばそれはただの関数呼び出しと解釈されるのでコンストラクタは呼ばれない。