C++相談室2

このエントリーをはてなブックマークに追加
373358=366
いや残念ながら俺が言いたかったのは、>>368氏が例としてあげた
> 逆にプログラマ責任サイドに振って、派生クラスの仮想メソッド
> を呼び出しOKにして、未構築なメンバをアクセスするような
> 仮想メソッドの場合は「未定義の動作」とする手もあったと思う。

こういう仕様の方が自然だったんじゃないか?ってこと。
仮想関数を呼んだときに実際に呼ばれる関数が
コンストラクタ配下で"だけ"他の場合と異なるってのは
違和感があるっつーか何というか。


> コンパイラ実装者は、コンストラクタに、オブジェクトを作成するための
> 多種多様なメモリ管理の意味を与えることができる。

ゴメン俺あんまり理解できてない模様。今の場合だと

  C++のコンストラクタ ∈ メモリ管理
→ vtableの構築も"コンストラクタ"の仕事
→ 派生クラスコンストラクタより先に基底クラスコンストラクタが呼ばれるので
→ 基底クラスコンストラクタ中ではvtableは整って無くて当然

ってことでしょか?