回答編集履歴
2
誤字修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
これ、昔はまったことありますわ…
|
2
2
|
|
3
|
-
結論から言うと、基本クラスのコンストラクタで派生クラスの仮
|
3
|
+
結論から言うと、基本クラスのコンストラクタで派生クラスの仮想関数は呼び出せません。理由は、基本クラスのコンストラクタは、派生クラスのコンストラクタより前に起動するからです。もし、その仮想関数が派生クラスの未初期化のオブジェクトを参照したら…
|
4
4
|
コンストラクタはまずvtblを設定し、それにより仮想関数は使えるようになります。今回、派生クラスのコンストラクタが呼ばれていないので、「派生クラスの」仮想関数にアクセスできないのです。
|
5
5
|
(ここまで当時の師匠の受け売り)
|
6
6
|
|
@@ -18,4 +18,5 @@
|
|
18
18
|
参考文献:
|
19
19
|
http://naokirin.hatenablog.com/entry/20110124/1295846829
|
20
20
|
|
21
|
-
追記:遅延コンストラクタってキーワードをば。
|
21
|
+
追記:遅延コンストラクタってキーワードをば。
|
22
|
+
さらに追記:誤字修正しました。
|
1
加筆
answer
CHANGED
@@ -16,4 +16,6 @@
|
|
16
16
|
個人的には、生のポインタよりスマートポインタの使用をオススメします。
|
17
17
|
|
18
18
|
参考文献:
|
19
|
-
http://naokirin.hatenablog.com/entry/20110124/1295846829
|
19
|
+
http://naokirin.hatenablog.com/entry/20110124/1295846829
|
20
|
+
|
21
|
+
追記:遅延コンストラクタってキーワードをば。
|