纯虚函数与抽象基类

在基类中加入至少一个纯虚函数,就使得基类成为了抽象类。

虚函数与抽象类的特点:

1.纯虚函数使用关键字virtual声明,并在函数声明后面加上=0。编译器不允许将抽象类实例化。

2.当继承一个抽象类的时候,必须实现所有的纯虚函数,否则由抽象类派生的类也是一个抽象类。

3.virtual void fun()=0;告诉编译器在虚函数表中为函数保留一个位置,但在这个特定位置不放地址。

class makefood
{
public:
virtual void firststep() = 0;
virtual void secondstep() = 0;
virtual void thirdstep() = 0;
void fun()
{
firststep();
secondstep();
thirdstep();
}
};
class makepie :public makefood
{
public:
virtual void firststep()
{
cout << "和面" << endl;
}
virtual void secondstep()
{
cout << "煎炸" << endl;
}
virtual void thirdstep()
{
cout << "出锅" << endl;
}
};
class makenoodle :public makefood
{
public:
virtual void firststep()
{
cout << "烧水" << endl;
}
virtual void secondstep()
{
cout << "下面" << endl;
}
virtual void thirdstep()
{
cout << "出锅" << endl;
}
};
void dofood(makefood* mkfood)
{
mkfood->fun();
delete mkfood;
}
void test()
{
//makefood mkfood;错误,抽象类不能实例化
makepie* mkpie = new makepie;//重写所有纯虚函数,才能实例化
makenoodle* mknoodle = new makenoodle;//重写所有纯虚函数,才能实例化
dofood(mkpie);
cout << endl;
dofood(mknoodle);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值