【发布时间】:2013-04-29 18:49:38
【问题描述】:
我一直在阅读此站点上的其他一些帖子,其中提到了 dynamic_cast 和 static_cast 都可以安全地向上转换。
为什么向上转换需要这些?
例如,如果类 B 是从 A 派生的,那么
A * ptr = new B ();
仍然有效,并且表现得像 A 类型的对象。(我也来自 Java 背景,不需要向上转换的转换。
我还在这个网站上读到,向下转换不需要 dynamic_cast [in question "When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?"] .同样,我认为只有在向下转换时才真正需要转换,因为向上转换会自动发生。
我哪里错了?
【问题讨论】:
-
注意:在上一个问题中,其中一个答案是“您不必使用它来向下投射......”。但是,从完整句子的上下文来看,意思是您不仅限于将其用于向下投射。 [我已经编辑了那个答案以消除歧义。]
标签: c++ oop inheritance polymorphism