虚拟类是在内存中只分配一次的类,因此该类的子类只使用在内存中建立的父类的一个副本。类是一组具有共同特征或属性的对象。当第二代或更多代父类从公共祖先基类派生时,使类成为虚拟类使面向对象的编程语言能够使用多重继承。根据所引用的计算机编程语言,“virtual”关键字、相似关键字或类的语法和语义用于暗示特定类将被视为虚拟类。
并非所有面向对象的编程语言都允许多重继承,即一个子类可以同时从多个父类派生。在C++语言这样的编程语言中,一个类可以同时继承来自父类的所有成员数据和成员函数,并且可以访问父数据和函数的集合。其他支持多重继承的语言包括Perl、Python、Tcl和Eiffel。
当用于创建子类的两个或多个父类最初仅从一个或同一个祖父母类派生时,多继承层次结构中会出现问题。这被称为钻石问题,这个名字来源于在这种情况下层次结构的外观。当编译器程序试图实例化一个类时,例如由两个父类和一个公共祖辈组成的孙子类,会在内存中创建祖辈的两个副本,每个父类一个副本。
由于内存中同一祖父母的多个副本会造成歧义,编译器无法确定孙辈应使用哪个祖父母副本访问祖父母数据或函数。为了弥补这种情况,在C++中,当声明父代时,祖父母被制成虚拟类。这会导致编译器在内存中只复制一个父辈共享的祖辈副本。一旦祖父母成为一个虚拟类,编译器就可以决定孙子应该如何访问祖父母,因为祖父母只有一个副本。
在构建类层次结构时,应该非常小心,特别是当它们将来将包含在更大层次结构中或成为更大层次结构的基础时。正确地利用虚拟类使类层次结构在开发中具有更大的自由度;但是,它们有可能导致难以定位的错误。对坚实的计算机编程工程原理的研究将有助于确保不会发生不当程序组织所带来的意外副作用。
...当执行这些程序时,它们被称为进程。 什么是虚拟内存(virtual memory)? Virtual memory is a logical memory. In other words, it is a memory management technique performed by the operating system. Virtual memory allows the programmer to use more memory for the programs than the av...
虚函数和纯虚函数的主要区别在于虚函数是基类中使用Virtual关键字声明的函数,而纯虚函数是基类中没有函数定义的虚函数。 多态性是面向对象的一个重要概念。它允许一个对象有多种形式。有两种类型的多态性称为早期结合...
...dents in California can choose between one of several charter or public virtual schools. 加州洞察学校例如,为幼儿园至12年级学生提供“课程、支持和服务”。 05 24岁 科罗拉多 该州对教育的奉献只是科罗拉多州众多值得热爱的事情之一...
虚函数是在超类中定义的函数,它必须存在于子类中,子类才能有完整的类定义。虚拟函数依赖于一种面向对象的编程范例,称为虚拟继承,这是最常见的C++中使用“虚拟...
...接安装在主机上,除了来宾操作系统之外,还控制硬件。virtualizaton manager代表了最常见的虚拟计算机体系结构实现。事实上,最早的虚拟管理器CP/CMS®是IBM在20世纪60年代开发的分时操作系统(OS),被认为是公司z/VM&注册...
虚拟键盘是产品软件中的一项创新,可以替代传统的计算机键盘。有时被称为激光键盘,它为无法操作标准键盘的人提供了一个简单而有效的解决方案。目前,市场上有几...
虚拟图书馆是保存和组织虚拟书籍及其相关文档的数字空间。它也可以指一个可以阅读书籍的空间。这些空间可以包括计算机、移动设备和互联网。有些虚拟库可以免费访...
虚拟内存系统是指位于计算机硬盘上的一个区域,该区域允许程序运行,而无需将程序加载到物理内存中。计算机基本上有两种内存系统:随机存取内存(RAM)和虚拟内存...
虚拟商户是向公众提供商品和服务的任何类型的网站,同时还提供在下单时通过在线借记卡和信用卡处理支付这些产品的方式。如今,大多数在线商店都向其客户提供这种...
虚拟教育指的是各种各样的教学形式,不需要学生和教师亲自协作,至少不需要在同...