首页 相关文章 c++类的多重继承与虚拟继承

c++类的多重继承与虚拟继承

在过去的学习中,我们始终接触的单个类的继承,但是在现实生活中,一些新事物往往会拥有两个或者两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念,C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承

   举个例子,交通工具类可以派生出汽车和船连个子类,但拥有汽车和船共同特性水陆两用汽车就必须继承来自汽车类与船类的共同属性。

由此我们不难想出如下的图例与代码:



  当一个派生类要使用多重继承的时候,必须在派生类名和冒号之后列出所有基类的类名,并用逗好分隔。

//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者

#include iostream
usingnamespacestd;

classVehicle
{
public:
Vehicle(int...[ 查看全文 ]

2016-02-19 标签:
  • 如果某个派生类的部分或者全部直接基类是从另一个共同的基类派生而来,在这些俄直接基类中, 从上一级基类继承来的成员就拥有相同的名称,因此派生类中就会出现同名现象。对这种类型的同名成员也要使用作用域分辨符来唯一标识,而且必须使用直接基类来进行限定。 -------------------------------------------------- /* * File: main.cpp * Author: ...[ 查看全文 ]
  • 标签:Java JAVA基础
    计算机学院研二的兄弟与我讨论Java,一见面,几个问题全是关于接口,接口有什么用?为什么要用接口?什么时候该使用接口?很庆幸他们不是问我Java如何连接SQL Server,或者是如何开发J2EE应用,这类问题有杀伤力,避之则吉。今年计算机学院本科有个毕业设计课题是做J2ME,选这个题目的学生在5月末都还在苦着脸研究java.util.*这个包,这个这个……唉。 大多数人认为,接口的意义在于顶替...[ 查看全文 ]
  • 标签:Java JAVA基础
    一:背景:Decorator *Decorator 常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator 模式中是必须的。 *Decorator 定义: 动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator 模式相比用生成子类方式达到功能的扩充显得更为灵活。 *为什么使用Decorat...[ 查看全文 ]
  • 只有公用派生类才是基类真正的子类型,它完整地继承了基类的功能。基类与派生类对象之间有赋值兼容关系,由于派生类中包含从基类继承的成员,因此可以将派生类的值赋给基类对象,在用到基类对象的时候可以用其子类对象代替。 具体表现在以下几个方面 : 派生类对象可以向基类对象赋值。 可以用子类(即公用派生类)对象对其基类对象赋值。如 A a1; //定义基类A对象a1 B b1; //定义类A的公用派生类B的对象b...[ 查看全文 ]
  • 类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然, Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支持类并不能说明就是支持面向对象,能够解决多态问题的语言,才是真正支持面向对象的开发的语言,所以务必提醒有过其它非面向对象语言基...[ 查看全文 ]
  • 封装:就是把一些属性和方法封装到一个类里。 继承:就如子类继承父类的一些属性和方法。 多态:就如一个父类有多个不同特色的子类。 这里我就不多讲解,下面我主要说明一个继承。继承是OOP(面向对象)的一个特色,java只支持单继承(如果继承两个有同样方法的父类,那么就不知道继承到那个父类的,所以java只支持单继承)。继承是java的一个特色,我们用的所以类都继承Objict类,所以就要Object类的方法...[ 查看全文 ]
  • IO 常用IO操作类继承结构 IO字符流Reader(源)BufferedReaderLineNumberReaderInputStreamReaderFileReader(字节流通向字符流的桥梁)   StringReader    Writer(目的)BufferedWriter   OutputStreamWriterFileWriter(字符流通向字节流的桥梁)   StringWriter空   PrintWriter空   字节流InputStream(源)File...[ 查看全文 ]
  • 标签:游戏动漫
    关于《死亡太空2》与相关作品的继承问题 http://forum.tgbus.com/viewthread.php?tid=1955714&extra=page%3D1 点击进入专区进行讨论 首先需要说明一下,这个死亡空间Ignition是一个XBLA/PSN游戏,可以在相应主机的网络游戏商店里面找到。   其中XBLA版是400微软点,PSN版是4.99美元。另外在欧美地区预定死亡空间2会免费赠送这款游戏的下载卡,当然天朝浮云了。。。 DS I...[ 查看全文 ]
  • 标签:flash教程
    AS2.0和JAVA.C#一样.也运用OOP模式.哪它一定就有继承.子类父类超类的分别.学过 JAVA,C#的人很快就能理解. 这里说的类继承指一个class类能够继承另一个class类的全部方法和属性.在说AS2.O的 类继承方法前.先说一下什么是.private(私有性成员)和public(公有性成员) AS2.0建立在class中的所有变量,方法,属性默认都是公有性的.我们当然也可以定义为私有 性的.比如一个变量.或方法.我并不想在FLA文件中用到.而只...[ 查看全文 ]
  • C++类对象的拷贝构造函数 作者:韩耀旭 对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include <iostreamusing namespace std;class CA{public:CA(int b){a=b;}void Show (){cout<<a<<endl;}private:int a;};int main(){CA A(10...[ 查看全文 ]
  • 实现LZARI压缩算法的C++类 作者: 阙荣文(querw) 下载源代码 这是一个基于LZARI算法的数据压缩的类.Haruhiko Okumura 于1989年7月4日用c语言写实现了这个算法.但是上面用到了一些全局或静态的变量,在MFC下用起来很不方便.我把它改写成了一个c++类,使它可以方便的压缩和解压缩,更重要的是,我新增加了两个接口,这个类可以压缩/解压缩一段内存缓冲区,而不仅仅是文件. 一...[ 查看全文 ]
  • 标签:Web开发
    1、关于javascript的apply和call函数 prototype.js中用了大量的apply和call函数,不注意会造成理解偏差。 官方解释:应用某一对象的一个方法,用另一个对象替换当前对象。 apply与call的区别是第二个参数不同。apply是  数组或者arguments 对象。而call是逗号隔开的任何类型。 apply,call方法最让人混淆的地方也是apply,call的特色。但最好不要滥用。 能改变调用函数的对象。如下例,...[ 查看全文 ]
  • 我们经常在项目中使用继承,但是往往不太明白,程序运行的顺序以及原理,尤其是使用上转型对象的时候,以及父类子类中都有static变量和方法时,不知道先运行谁。我也是写了一个例子。总结了一下。 代码如下: 父类: public class TestStatic {     public static String name="china";     {        System.out.println("========方法体==...[ 查看全文 ]
  • 首先看一个例子: 代码如下: #include iostream  using namespace std;  class A{};  class B  {      int b;      char c;  };  class C  {      int c1;         static int c2;  };  int C::c2 = 1;  class D:public C,public B{  &nb...[ 查看全文 ]
  • 引言 台屏的操作是控制实现的常规操作,但是由于台屏本身固有的原因,存在一些问题,如:成本高,易损坏,维修难等。所以计算机虚拟台屏已经成为合适的替代品。在仿真领域,台屏的计算机虚拟更成为较好的一种方法。在计算机虚拟台屏的软件编制中,由于台屏的特殊性,使软件的编制存在一些相应的难点,如台屏图像的缩放、漫游、旋转等。 C++ Builder是基于Windows进行可视化C语言开发的最好的技...[ 查看全文 ]
  • 最近因为学校做网站设计,所以一直在ASP上和数据库上大费苦心。 我在前一个阶段是做Java程序设计的。突然接到任务并学习ASP,所以我一直都热忠并善于利用JavaScript来构架ASP程序。 JavaScript的一个明显的优点就在于它可以定义和持有自己的对象。这一点好象是VBScript所无法比拟的。 有了这一点,可以利用JavaScript进行更接近于面向对象的程序设计。也许这将使网站开发更有乐趣.....[ 查看全文 ]
  •   function Person_mfGetName()   {   return this.m_strName;   }   var MyPerson=new Person();   MyPerson.GetName();   你可以用任何输出语句来查看结果。当然这只是第一步!   下面是关键一步:继承!   function Student() // Extends Class: Person   {   EXTENDS: // 我的习惯, 但要切记不能使用小写字母. 因为extends是JavaScript中的保...[ 查看全文 ]
  • 验孕棒使用答疑 如何正确使用验孕棒(1) 对于验孕棒多久能测出怀孕,专家介绍,同房后至少10天,怀孕1周之后才能查出结果,过早地使用验孕棒做尿液测试,结果可想而知,呈现的阴性反应可能是错误的。 验孕棒多久能测出怀孕,一些人有错误的观念,在怀疑怀孕tulaoshi.com的当天就可以用试纸检测,或者是夫妻俩在同房第二天就急急忙忙地买试纸来检测,结果可想而 知,在使用试纸的时候要注意,试纸几天能测...[ 查看全文 ]
  • 标签:孕前
    抓住怀孕“黄金”时刻 要想生个聪明、健康的宝宝,怀孕的时机很重要。 那么,什么时候受孕最合适呢? 生孩子就如同种树一样,每一步都需要细心呵护。 拿着日历算一算,哪一天受孕最合适。 你想过吗?生孩子并不是夫妇两个人的事,要考虑到你的选择会影响到宝宝未来的健康和生活。 也许你没办法给孩子一大笔财富,也许你不能选择孩子是否会是个天才,但是你能给他一个健康的体魄。所以作为未来的妈妈,...[ 查看全文 ]
  • /*p129*/#include class CComplex{public: CCpomplex(double r=0,double i=0) { realPart=r; imagePart=i; } void print() { cout /*p129*/#include class CComplex{public: CCpomplex(double r=0,double i=0) { realPart=r; imagePart=i; } void print() { cout[ 查看全文 ]
手机页面 收藏网站 回到头部