纯虚函数与抽象基类

来源:互联网 发布:软件负载测试 编辑:程序博客网 时间:2024/06/17 05:18

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

虚函数与抽象类的特点:

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);
}

0 0
原创粉丝点击