我一直在阅读该站点上的其他一些线程,它们提到了 dynamic_cast 和 static_cast 对向上转换都是安全的。
为什么这些甚至需要向上转换?
例如,如果类 B 派生自 A,则
A * ptr = new B ();
仍然可以工作,并且表现得像 A 类型的对象。(我也来自 Java 背景,不需要向上转换的转换。
我还在这个网站上读到,向下转换不需要 dynamic_cast [有问题的“什么时候应该使用 static_cast、dynamic_cast、const_cast 和 reinterpret_cast? ”]。同样,我认为只有在向下转换时才真正需要转换,因为向上转换会自动发生。
我哪里错了?