★初心者にVisual C++を教えるスレ★ Part17
■ このスレッドは過去ログ倉庫に格納されています
0672デフォルトの名無しさん
皇紀2665/04/01(金) 09:29:58newをオーバーロードするとoperator newの中身を処理した後、
その戻り値をthisポインタにしてコンストラクタが呼ばれる。(newの結果もそのポインタになる。)
operator newの戻り値はクラスのポインタではなくvoid *となっているのは、
operator newを行った時点では(コンストラクタが呼ばれていないので)まだインスタンスは出来上がっていないから。
operator deleteは逆にまずデストラクタを呼び出してからoperator deleteが呼ばれる。
デストラクタを呼んだ後だからもはやただのメモリブロックを表すに過ぎないからこの引数もvoid *。
operator new[]/delete[]も同様。
もちろんhoge::operator new()とでもして呼べばそれはただの関数呼び出しと解釈されるのでコンストラクタは呼ばれない。
■ このスレッドは過去ログ倉庫に格納されています