工程10-1 扩展Vehicle类
在该工程中,我们针对第八章中的Vehicle类创建一个子类。
回忆一下,Vechile类封装了汽车的信息,包括载客人数,邮箱容量以及每加仑油能跑的里程数。我们可以以Vechile类作为基础来创建更多更具体的类。例如,卡车就是一种Vechile。卡车的一个重要属性就是它的载重量。因此我们可以采用集成Vehicle类的方式来创建Truck类,只需要增加一个实例变量来表示它的载重量。在该工程中,我们就将创建这样的Truck类。其中,我们会把Vehicle的实例变量声明为private,而增加访问函数来获取它们的值。
步骤:
1. 创建一个文件,名称TruckDemo.cpp,把第八章中最后一个版本的Vehicle的实现拷贝过来。
2. 创建Trucnk类,如下:
//在Vechile类的基础上增加特有的属性
class Truck : public Vehicle
{
public:
int cargocap; //载重量,单位:磅
//构造函数
Truck( int p , int f, int m, int c ) : Vehicle(p,f,m)
{
cargocap = c;
}
//载重量的访问函数
int get_cargocap()
{
return cargocap;
}
};
这里,Truck类继承了Vehicle类,并增加了cargaocap成员。因此,Truck类中包含了通用类Vechile中的全部元素。增加的只是Trunck特有的元素。
3. 完整的程序如下:
#include <iostream>
using namespace std;
//声明Vehicle类
class Vehicle
{
int passengers; // 载客人数
int fuelcap; // 油箱容量
int mpg; // 每加仑油能跑的里程数
public:
//构造函数
Vehicle(int p, int f, int m)
{
passengers = p;
fuelcap = f;
mpg = m;
}
int range() //计算并返回汽车能跑的最大里程数,此处为函数声明
{
return mpg * fuelcap;
}
//访问函数
int get_passangers() { return passengers; };
int get_fuelcap() { return fuelcap; };
int get_mpg() { return mpg; };
};
//在Vechile类的基础上增加特有的属性
class Truck : public Vehicle
{
public:
int cargocap; //载重量,单位:磅
//构造函数
Truck( int p , int f, int m, int c ) : Vehicle(p,f,m)
{
cargocap = c;
}
//载重量的访问函数
int get_cargocap()
{
return cargocap;
}
};
int main()
{
//生成Trunck类的对象
Truck semi(2,200,7,4400);
Truck pickup(3,28,15,2000);
int dist = 252;
cout <<"Semi can carry " << semi.get_cargocap() << " pounds.\n";
cout << "It has a range of " << semi.range() << " miles.\n";
cout << "To go " << dist << " miles semi needs "
<< dist/semi.get_mpg() << " gallons of fuel.\n\n";
cout <<"Pickup can carry " << pickup.get_cargocap() << " pounds.\n";
cout << "It has a range of " << pickup.range() << " miles.\n";
cout << "To go " << dist << " miles pickup needs "
<< dist/pickup.get_mpg() << " gallons of fuel.\n";
return 0;
}
4. 上面程序的输出如下:
Semi can carry 4400 pounds.
It has a range of 1400 miles.
To go 252 miles semi needs 36 gallons of fuel.
Pickup can carry 2000 pounds.
It has a range of 420 miles.
To go 252 miles pickup needs 16 gallons of fuel.
5. 我们还可以从Vehicle类派生出许多别的类。比如,下面的代码框架就创建了一个越野车的类,它存储了车辆距离地面的净距离:
class off-road : public Vechile
{
int groundClearance; // 距离地面净距离,单位英寸
public:
// …
};
重要的一点是,一点我们创建了具有对象通用属性的基类,我们就可以继承该类从而创建特殊的类。每个派生类只是简单地增加自己特有的属性即可,这就是继承的本质。
今天的文章c++新手入门教程_c++基础知识[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84615.html