C++类的多重担当与虚拟担当[VC/C++编程]
本文“C++类的多重担当与虚拟担当[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在过去的学习中,我们始终接触的单个类的担当,但是在实际生活中,一些新事物常常会拥有两个大概两个以上事物的属性,为了办理这个问题,C++引入了多重担当的概念,C++答应为一个派生类指定多个基类,这样的担当构造被称做多重担当.
举个例子,交通工具类可以派生出汽车和船连个子类,但拥有汽车和船共同特点水陆两用汽车就必须担当来自汽车类与船类的共同属性.
由此我们不难想出以下的图例与代码:
当一个派生类要利用多重担当的时刻,必须在派生类名和冒号之后列出全部基类的类名,并用逗好脱离.
//程序作者:管宁
//站点:www.cndev-lab.com
//全部稿件均有版权,如要转载,请务必闻名出处和作者
#include<iostream>
usingnamespacestd;
classVehicle
{
public:
Vehicle(intweight=0)
{
Vehicle::weight=weight;
}
voidSetWeight(intweight)
{
cout<<"重新设置重量"<<endl;
Vehicle::weight=weight;
}
virtualvoidShowMe()=0;
protected:
intweight;
};
classCar:publicVehicle//汽车
{
public:
Car(intweight=0,intaird=0):Vehicle(weight)
{
Car::aird=aird;
}
voidShowMe()
{
cout<<"我是汽车!"<<endl;
}
protected:
intaird;
};
classBoat:publicVehicle//船
{
public:
Boat(intweight=0,floattonnage=0):Vehicle(weight)
{
Boat::tonnage=tonnage;
}
voidShowMe()
{
cout<<"我是船!"<<endl;
}
protected:
floattonnage;
};
classAmphibianCar:publicCar,publicBoat//水陆两用汽车,多重担当的表现
{
public:
AmphibianCar(intweight,intaird,floattonnage)
:Vehicle(weight),Car(weight,aird),Boat(weight,tonnage)
//多重担当要注意调用基类构造函数
{
}
voidShowMe()
{
cout<<"我是水陆两用汽车!"<<endl;
}
};
intmain()
{
AmphibianCara(4,200,1.35f);//错误
a.SetWeight(3);//错误
system("pause");
}
上面的代码从表面看,看不出有明显的语发错误,但是它是不可以通过编译的.这有是为什么呢?
以上是“C++类的多重担当与虚拟担当[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |