科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件c++类的多重继承与虚拟继承

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

来源:中国软件网 2008年4月1日

关键字: 虚拟 多重继承 C++ C Linux

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

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

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

#include <iostream>
usingnamespacestd;

classVehicle
{
public:
Vehicle(intweight =0)
{
Vehicle::weight =weight;
}
voidSetWeight(intweight)
{
cout<<"重新设置重量"<Vehicle::weight =weight;
}
virtualvoidShowMe() =0;
protected:
intweight;
};
classCar:publicVehicle//汽车
{
public:
Car(intweight=0,intaird=0):Vehicle(weight)
{
Car::aird =aird;
}
voidShowMe()
{
cout<<"我是汽车!"<}
protected:
intaird;
};

classBoat:publicVehicle//船
{
public:
Boat(intweight=0,floattonnage=0):Vehicle(weight)
{
Boat::tonnage =tonnage;
}
voidShowMe()
{
cout<<"我是船!"<}
protected:
floattonnage;
};

classAmphibianCar:publicCar,publicBoat//水陆两用汽车,多重继承的体现
{
public:
AmphibianCar(intweight,intaird,floattonnage)
:Vehicle(weight),Car(weight,aird),Boat(weight,tonnage)
file://多重继承要注意调用基类构造函数
{

}
voidShowMe()
{
cout<<"我是水陆两用汽车!"<}
};
intmain()
{
AmphibianCar a(4,200,1.35f);//错误
a.SetWeight(3);//错误
system("pause");
}

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章