07/11/24 09:44:28
>>905
まあ new しないで使うだけの事もあるし、
new したとしても常に元の型で delete する場合もあるだろうしな。
ただ、安全を考えるならとりあえず virtual にしといて、
それが速度に影響していた場合だけ変えればいいと思うよ。
仮想関数が1つでもあればどうせ仮想関数テーブルは存在するし、
delete 使わずにデストラクタが直接呼ばれる場合には
どのクラスのデストラクタを呼ぶか確定してるから普通のメンバ関数と同じ形で呼ばれるから
特別なコストは発生しないし。(インライン化も可能。)
つまり、仮想デストラクタが影響するのは delete 時のコスト変化だけだから、
既に仮想関数テーブルがあるような状況では、
常に元の型で delete する場合にしか影響は無い。
でも、delete のコストで普通はまぎれる。