什么是虚拟继承(Virtual Inheritance)?

虚拟继承是一种继承类型,其中父类的实现是不完整的,并且需要子类才能完整地定义对象。这种类型的继承可以与单继承和多重继承结合使用,但最常用于多重继承。任何从虚拟基类成为该基类的直接子类。虚拟基类可能依赖于子类...
虚拟继承是一种继承类型,其中父类的实现是不完整的,并且需要子类才能完整地定义对象。这种类型的继承可以与单继承和多重继承结合使用,但最常用于多重继承。任何从虚拟基类成为该基类的直接子类。虚拟基类可能依赖于子类来实现其所有方法,但这不是一个要求。C是最常用的使用虚拟继承的计算机语言。C是最常用的使用虚拟继承的计算机语言。要在C中声明虚拟继承,使用“virtual”关键字。父类和子类都必须用“virtual”关键字声明虚方法这告诉C编译器超类是不完整的,它必须从子类中获取信息才能完成它。使用子类来完成超类并不意味着子类如果有相同的基类,它们会相互覆盖,而是由C编译器来决定每个对象的哪些部分虚拟继承需要虚拟基类,C中的全局函数不能声明为虚。只有在遵循面向对象编程(OOP)原则的情况下才能使用此继承类型。原因是全局函数与特定的类没有关联,所以通常是独立的,没有超类和子类的继承是不可能发生的,所以全局函数和虚继承是互斥的,全局函数理论上可以在虚函数内部使用,但反过来可能并不总是有效的,虚拟继承被用来解决许多编程问题,其中最有用的是解决歧义在多重继承中,可以有一个基类a,它有两个子类B和C,然后是一个从类B和C继承的类D。这种模式通常被称为“死亡钻石”,因为如果类a、B和C都有相同方法的实现,类D不可能确定它应该使用哪个实现。虚拟继承解决了这个问题,因为每个类的实现都是不同的,因此没有歧义。这种区别是由名为虚拟表(vtables)的专用内部对象处理的,这些对象跟踪每种对象类型,但这些表不需要由程序员显式地操作,因为它们是内置于语言中的
  • 发表于 2020-08-06 15:03
  • 阅读 ( 1058 )
  • 分类:电脑网络

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

推荐文章

联系我们:uytrv@hotmail.com 问答工具