- 544 名前:デフォルトの名無しさん mailto:sage [2014/05/15(木) 21:07:56.98 ID:bM3jlx72]
- デストラクタ呼び出しは実際の型に従う
よって fooTest *f; が foo2Test を指していても fooTest のデストラクタが呼び出される ここでデストラクタが仮想でないと foo2Test のデストラクタは呼び出されない ここでfoo2Testには自前でデリートしなくちゃいけないデータメンバや破壊時の特殊処理がないのでデストラクタはいらない (自動変数はデストラクタの有無にかかわりなく必ず破壊される) 一方 fooTest には foo* を削除する義務があるのでデストラクタが必要だが public な void tearDown () でユーザーに明示的に foo* をデリートする機会を与えている 恐らくこれはcomオブジェクトのように自明な破壊を行う前に ユーザーによる明示的デリートコマンドの呼び出しを想定している・_・ …いやわかんね^q^;テキトー
|

|