次のコードで、タイプdaughter
のオブジェクトをインスタンス化すると、デフォルトのgrandmother()
コンストラクタが呼び出されるのはなぜですか?デフォルトのコンストラクタが仮想継承で呼び出されるのはなぜですか?
私はgrandmother(int)
コンストラクタを呼び出す必要があります(私のmother
クラスコンストラクタの仕様に従う)か、このコードは仮想継承のためにまったくコンパイルすべきではないと考えました。
ここでコンパイラは暗黙のうちにgrandmother
のデフォルトのコンストラクタを私の背中に呼び出しますが、私は決してそれを求めませんでした。
どのコンパイラ(およびバージョン)ですか?どのような議論をしてコンパイルしましたか? – orlp
gcc 4.6.3 20120306(Red Hat 4.6.3-2)(fedora 15の場合)引数は次のとおりです。引数:-O0 -g3 -Wall -c -fmessage-length = 0 –
g ++ 4.1.2には同じ問題があります。http:// codepad.org/L0jBXfSP – orlp