将对象转换为基类或派生类?

之间有什么区别:

cBase* object = new cDerived();

cDerived* object = new cDerived();

如果是这样,在哪种情况下我应该选择一个?

鲁阿赫

不同之处在于它们声明object具有不同的类型,这可能会带来很多后果。例如:

  • 如果cDerived声明了任何新成员(除了继承自的成员之外cBase),则只有带有cDerived* object的成员才可用(除非您明确向下转换为cDerived*)。
  • 如果cBase声明了任何cDerived重写的非虚拟成员函数,则调用哪个成员函数取决于用于调用它的指针的类型。
  • 如果某个函数期望采用cDerived*,则不能将其传递给cBase*(除非您明确向下转换为cDerived*)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以滥用reinterpret_cast将对象转换为派生类?

来自分类Dev

防止派生类转换为基类

来自分类Dev

将基类数组转换为派生类数组

来自分类Dev

将基类转换为派生类

来自分类Dev

将派生类转换为基类

来自分类Dev

通过反射将基类转换为派生类

来自分类Dev

Python继承:从基类转换为派生类

来自分类Dev

将基类的指针转换为派生类(参考)

来自分类Dev

从派生类创建基类对象

来自分类Dev

从派生类访问基类对象

来自分类Dev

对派生类对象的基类引用

来自分类Dev

将基础对象转换为派生类

来自分类Dev

将派生类指针转换为基类时,基类不明确

来自分类Dev

在这种情况下,将基类的对象强制转换为EMPTY派生类是不安全的

来自分类Dev

为什么GetType()在将派生类显式转换为基类后返回派生类?

来自分类Dev

用户定义的转换是否将派生类类型转换为基类类型?

来自分类Dev

将派生类的指针数组转换为基类指针的数组

来自分类Dev

C ++设计:无需额外的数据成员即可从基类转换为派生类

来自分类Dev

如何在几何基类中检查冲突而不转换为派生类

来自分类Dev

C ++-将基类指针转换为派生类指针

来自分类Dev

动态将派生类类型转换为基类C#

来自分类Dev

将派生类类型转换为基类后保存

来自分类Dev

将指向派生类的指针数组转换为指向基类的指针数组

来自分类Dev

为什么这段代码不将基类转换为c ++中的派生类?

来自分类Dev

如何将派生类转换为具有新属性的基类?

来自分类Dev

c ++设计:无需额外的数据成员即可从基类转换为派生类

来自分类Dev

将容器中的基类向下转换为派生类

来自分类Dev

派生类不能在分配中转换为基类

来自分类Dev

C ++从具有不同模板编号的派生类转换为基类

Related 相关文章

  1. 1

    是否可以滥用reinterpret_cast将对象转换为派生类?

  2. 2

    防止派生类转换为基类

  3. 3

    将基类数组转换为派生类数组

  4. 4

    将基类转换为派生类

  5. 5

    将派生类转换为基类

  6. 6

    通过反射将基类转换为派生类

  7. 7

    Python继承:从基类转换为派生类

  8. 8

    将基类的指针转换为派生类(参考)

  9. 9

    从派生类创建基类对象

  10. 10

    从派生类访问基类对象

  11. 11

    对派生类对象的基类引用

  12. 12

    将基础对象转换为派生类

  13. 13

    将派生类指针转换为基类时,基类不明确

  14. 14

    在这种情况下,将基类的对象强制转换为EMPTY派生类是不安全的

  15. 15

    为什么GetType()在将派生类显式转换为基类后返回派生类?

  16. 16

    用户定义的转换是否将派生类类型转换为基类类型?

  17. 17

    将派生类的指针数组转换为基类指针的数组

  18. 18

    C ++设计:无需额外的数据成员即可从基类转换为派生类

  19. 19

    如何在几何基类中检查冲突而不转换为派生类

  20. 20

    C ++-将基类指针转换为派生类指针

  21. 21

    动态将派生类类型转换为基类C#

  22. 22

    将派生类类型转换为基类后保存

  23. 23

    将指向派生类的指针数组转换为指向基类的指针数组

  24. 24

    为什么这段代码不将基类转换为c ++中的派生类?

  25. 25

    如何将派生类转换为具有新属性的基类?

  26. 26

    c ++设计:无需额外的数据成员即可从基类转换为派生类

  27. 27

    将容器中的基类向下转换为派生类

  28. 28

    派生类不能在分配中转换为基类

  29. 29

    C ++从具有不同模板编号的派生类转换为基类

热门标签

归档