dynamic_cast跟static_cast 對於下轉的差異我基本上了解
但是
基於這個
http://tinyurl.com/y49guge8
https://clang.llvm.org/extra/clang-tidy/checks/cppcoreguidelines-pro-type-static-cast-downcast.html
我看到同事因為這樣而把所有static_cast 全部改成dynamic_cast
導致必須加上 try catch(){ 這邊還補上了assert(false) 強調這件事不該發生}
我想問的是
既然static_cast就是對於下轉 不安全
1. 我有什麼情況下該用(較好)static 而不是dynamic_cast呢?
如果有安全的我幹嘛要用static_cast? 想知道有什麼理由反倒static_cast是更被接受的
https://ideone.com/vam3fi
2. 實際在寫產品的時候
什麼時候"不會" 把base class的 解構子 加上 virtual?
我不能阻止寫code的人 一定不能寫Base* = Derived;
所以一定會補上virtual destructor 來有備無患
但這樣變成 只要不是final class 我解構子都該冠上virtual?
謝謝