之间有什么区别:
cBase* object = new cDerived();
和
cDerived* object = new cDerived();
如果是这样,在哪种情况下我应该选择一个?
不同之处在于它们声明object
具有不同的类型,这可能会带来很多后果。例如:
cDerived
声明了任何新成员(除了继承自的成员之外cBase
),则只有带有cDerived* object
的成员才可用(除非您明确向下转换为cDerived*
)。cBase
声明了任何cDerived
重写的非虚拟成员函数,则调用哪个成员函数取决于用于调用它的指针的类型。cDerived*
,则不能将其传递给cBase*
(除非您明确向下转换为cDerived*
)。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句