- スレを勃てるまでもないC/C++の質問はここで 22
227 :デフォルトの名無しさん[]:2014/06/17(火) 02:48:13.60 ID:jLYVWX8U - >>225
コメントは基底クラスTESTだと思います。 オブジェクトの型については>>226が書かれたようにnewした方の型なので ・test[0] : TEST型 ・test[1] : SUPER型の内、TEST型で定義の範囲だけ をポインタから扱えるのだと思います。 TEST型なのにSUPER型の関数が呼ばれるのは仮想関数テーブル(VMT)の為で、 virtual がつくとoutput関数はVMTを介して呼び出されるので ・TESTクラスのコンストラクタ実行時->VMTにはTEST::output()へのアドレス ・SUPERクラスのコンストラクタ実行時->VMTにはSUPER::output()へのアドレス へ書き換えられた為だと思います。 http://codepad.org/CKXyaOCe 自分の解釈だけで書いたので、詳しい方、訂正お願いします。
|