纯虚函数与抽象类
当类中有了纯虚函数,这个类也就是抽象类,
抽象类的特点:
无法实例化对象
子类必须重写抽象类中的纯虚函数,否则也属于抽象类
纯虚函数语法:
virtual 返回值类型 函数名 (参数列表)=0
#include <iostream>
class AbstractDrink{
public:
//煮水
virtual void Boil()=0;
//冲泡
virtual void Brew()=0;
//倒入杯中
virtual void PourInCup()=0;
//加入辅料
virtual void PutSomething()=0;
//制作
void makeDrink(){
Boil();
Brew();
PourInCup();
PutSomething();
}
};
class Coffee:public AbstractDrink{
virtual void Boil(){
std::cout<<"煮农夫山泉"<<std::endl;
};
//冲泡
virtual void Brew(){
std::cout<<"冲泡"<<std::endl;
};
//倒入杯中
virtual void PourInCup(){
std::cout<<"倒入杯中"<<std::endl;
};
//加入辅料
virtual void PutSomething(){
std::cout<<"加入糖和牛奶"<<std::endl;
};
};
class Tea:public AbstractDrink{
virtual void Boil(){
std::cout<<"煮矿泉水"<<std::endl;
};
//冲泡
virtual void Brew(){
std::cout<<"冲泡"<<std::endl;
};
//倒入杯中
virtual void PourInCup(){
std::cout<<"倒入杯中"<<std::endl;
};
//加入辅料
virtual void PutSomething(){
std::cout<<"加入枸杞"<<std::endl;
};
};
//制作函数
void doWork(AbstractDrink *abs){
abs->makeDrink();
delete abs;
}
int main(){
doWork(new Coffee);
}