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?
谢谢