• C++虚函数指针(virtual)


    1. #include"iostream"
    2. using namespace std;
    3. class BoidTea{
    4. public:
    5. // 打水
    6. // // 这是一个指向函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
    7. virtual void fetchWater() =0;
    8. // 准备茶叶
    9. // // 这是一个指向函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
    10. virtual void prepareTea() = 0;
    11. // 泡茶
    12. // // 这是一个指向函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
    13. virtual void makeTea() = 0;
    14. // 喝茶
    15. // // 这是一个指向函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
    16. virtual void drinkTea() = 0;
    17. // // 虚析构函数
    18. // 这是一个指向虚析函数入口的指针,目前有一个函数入口可以执行,默认为~BoidTea() ,如果继承这个类就会使用继承这个类的函数入口
    19. // virtual ~BoidTea(){
    20. // cout<<"clean water and tea"<
    21. // }
    22. // // 纯虚析构函数
    23. // // 这是一个指向虚析函数入口的指针,目前没有任何可以指向的函数入口,默认为0(nullptr),如果继承这个类就会使用继承这个类的函数入口
    24. // virtual ~BoidTea() = 0;
    25. };
    26. class TieGunyin : public BoidTea{
    27. public:
    28. // 这样一个指向函数入口的指针,目前指向fetchWater()函数入口,如果有其他类继承TieGunyin类,就会使用继承类的fetchWater函数入口
    29. virtual void fetchWater(){
    30. cout<<"I fetch water in my pool"<
    31. }
    32. virtual void prepareTea(){
    33. cout<<"I prepare some Tie guanyin tea"<
    34. }
    35. virtual void makeTea(){
    36. cout<<"I make Tea"<
    37. }
    38. virtual void drinkTea(){
    39. cout<<"The tie guanyin tea is vary good ,next time i will buy this again"<
    40. }
    41. void start()
    42. {
    43. fetchWater();
    44. prepareTea();
    45. makeTea();
    46. drinkTea();
    47. }
    48. };
    49. int main(int argc,char *argv[])
    50. {
    51. TieGunyin *t=nullptr;
    52. t = new TieGunyin;
    53. t->start();
    54. delete t;
    55. return 0;
    56. }

    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