- #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"<
- // }
-
- // // 纯虚析构函数
- // // 这是一个指向虚析函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
- // virtual ~BoidTea() = 0;
-
- };
-
- class TieGunyin : public BoidTea{
- public:
- // 这样一个指向函数入口的指针,目前指向fetchWater()函数入口,如果有其他类继承TieGunyin类,就会使用继承类的fetchWater函数入口
- virtual void fetchWater(){
- cout<<"I fetch water in my pool"<
- }
- virtual void prepareTea(){
- cout<<"I prepare some Tie guanyin tea"<
-
- }
- virtual void makeTea(){
- cout<<"I make Tea"<
- }
- virtual void drinkTea(){
- cout<<"The tie guanyin tea is vary good ,next time i will buy this again"<
- }
-
- 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 关键字实际上是一个类中指向函数入口的指针。
-
相关阅读:
Spring Boot中添加Thymeleaf模板
Android AOP二三事:使用APT仿写ButterKnife
apt remove purge的区别 删除包的同时删除配置文件
antdesignvue数字输入框限制只能输入整数
【长难句分析精讲】定语从句
面向对象知识总结
实战Kaggle比赛:预测房价
使用Get-ADOrganizationalUnit导出指定OU下子OU列表
C语言--一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高
springboot整合redis集群
-
原文地址:https://blog.csdn.net/weixin_53064820/article/details/126225182