2010-07-03から1日間の記事一覧

delete this の安全性

メンバー向けトレーニングネタその1。delete this は危険に見えるが何を削除しているのか確認する。 class ClassA { public: void del() { delete this; } }; int main() { ClassA* ptr = new ClassA(); ptr->del(); // ダメな例 // ClassA test; // test.d…

C++ でオーバーライドした仮想関数をコンストラクタで呼ぶ

ClassA の仮想関数 method() を継承した ClassB でオーバライドした場合でも ClassA のコンストラクタ内の method() は ClassA::method() を指している。これは vptr の初期化タイミングで説明できると思っていたが違った orz(以下、ubuntu 64bit 環境で試…