C++纯虚函数和抽象类案例
在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容。因此可以将虚函数改为纯虚函数。
1.纯虚函数用法:
virtual 返回值类型 函数名(参数列表)=0;
当类中有了纯虚函数,这个类也称为抽象类。
2. 抽象类特点:
无法实例化对象
子类必须重写抽象类中的纯虚函数,否则也属于抽象类,无法实例化对象。
class AbstractDrinking {
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 AbstractDrinking {
public:
virtual void Boil() {
cout << "煮农夫山泉水" << endl;
}
virtual void Brew() {
cout << "冲泡咖啡" << endl;
}
virtual void PourIncup() {
cout << "倒入杯中" << endl;
}
virtual void PutSomething() {
cout << "加入糖和牛奶" << endl;
}
};
class Tea :public AbstractDrinking {
public:
virtual void Boil() {
cout << "煮农夫山泉水" << endl;
}
virtual void Brew() {
cout << "冲泡茶叶" << endl;
}
virtual void PourIncup() {
cout << "倒入杯中" << endl;
}
virtual void PutSomething() {
cout << "加入枸杞" << endl;
}
};
void doWork(AbstractDrinking *abc)
{
abc->makeDrink();
delete abc;
}
void test01() {
doWork(new Coffee);
cout << "------------------" << endl;
doWork(new Tea);
}
int main()
{
test01();
system("pause");
return 0;
}