C++学习笔记 -抽象基类和纯虚函数

为避免实例化无意义的基类,就可以使用抽象类来实现,抽象类一般都是做为基类来使用的,故称为抽象基类,或者也可以将具体功能定义为纯虚函数。

纯虚函数是一个特殊的函数,它没有具体的实现(没有函数体的实现)。

纯虚函数需要定义在类体内:virtual <类型><函数名>(<参数列表>)​=0;

使用纯属函数​应注意以下几点:

1.纯虚函数没有函数体;

2.函数最后的“=0"表示告诉编译系统该函数是纯虚函数,而并不是返回值是0;

3.纯虚函数没有函数体就没有实现,但是最后应有分号。

4.如果有一个基类定义了一个纯虚函数,该函数的实现通常在其派生类中。基类的纯虚函数就好比是一个接口,它告诉编译系统该函数的实现是在其派生类中,只有被继承才能调用该函数。注意如果在派生类中没有实现该函数,那么该函数仍然是纯虚函数。​​​​

上一例的代码,在基类中修改为纯虚函数,运行结果相同。

#include

using namespace std;

class Transport

{

public:

virtual void setspeed(int s)=0;//定义虚函数,设置参数

virtual void transport()=0;//定义虚函数,显示状态

private:

int speed;//私有成员

};

class Car:public Transport//public方式继承Transport

{

public:

virtual void setspeed(int s)//定义虚函数,设置参数

{

speed=s;

cout<<"in Car setspeed()"<<ENDL;< p>

}

virtual void transport()//定义虚函数,显示状态

{

cout<<"Car transport in"<<SPEED<<ENDL;< p>

}

private:

int speed;

};

class Trian:public Transport//public方式继承Transport

{

public:

virtual void setspeed(int s)//定义虚函数,设置参数

{

speed=s;

cout<<"in Trian setspeed()"<<ENDL;< p>

}

virtual void transport()//定义虚函数,显示状态

{

cout<<"Trian transport in"<<SPEED<<ENDL;< p>

}

private:

int speed;

};

void print(Transport & t)//全局函数,参数是基类的引用

{

t.transport();

}

void main()

{

Transport *pt;//定义基类对象指针

Car c;

pt=&c;//指针指向对象Car的对象c

pt->setspeed(60);//访问相应虚函数

Trian t;

pt=&t;

pt->setspeed(200);//指针指向对象Trian的对象t

print(c);//调用全局函数

print(t);

}​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值