#include"iostream"
using namespace std;
class BoidTea{
public:
// 打水
// // 这是一个指向函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
virtual void fetchWater() =0;
// 准备茶叶
// // 这是一个指向函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
virtual void prepareTea() = 0;
// 泡茶
// // 这是一个指向函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
virtual void makeTea() = 0;
// 喝茶
// // 这是一个指向函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
virtual void drinkTea() = 0;
// // 虚析构函数
// 这是一个指向虚析函数入口的指针,目前有一个函数入口可以执行,默认为~BoidTea() ,如果继承这个类就会使用继承这个类的函数入口
// virtual ~BoidTea(){
// cout<<"clean water and tea"<<endl;
// }
// // 纯虚析构函数
// // 这是一个指向虚析函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
// virtual ~BoidTea() = 0;
};
class TieGunyin : public BoidTea{
public:
// 这样一个指向函数入口的指针,目前指向fetchWater()函数入口,如果有其他类继承TieGunyin类,就会使用继承类的fetchWater函数入口
virtual void fetchWater(){
cout<<"I fetch water in my pool"<<endl;
}
virtual void prepareTea(){
cout<<"I prepare some Tie guanyin tea"<<endl;
}
virtual void makeTea(){
cout<<"I make Tea"<<endl;
}
virtual void drinkTea(){
cout<<"The tie guanyin tea is vary good ,next time i will buy this again"<<endl;
}
void start()
{
fetchWater();
prepareTea();
makeTea();
drinkTea();
}
};
int main(int argc,char *argv[])
{
TieGunyin *t=nullptr;
t = new TieGunyin;
t->start();
delete t;
return 0;
}
virtual 关键字实际上是一个类中指向函数入口的指针。