C++之——虚函数与纯虚函数的用法

本文深入探讨了虚函数与纯虚函数的概念、相同点与不同点,并通过示例展示了如何在C++中使用它们。重点强调了抽象类的特性以及纯虚函数在实现抽象基类时的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚函数与纯虚函数的相同点:

   1.都可以在子类中重载,以多态的形式被调用。

   2.通常都存在于抽象基类中,被继承的子类重载,目的是提供一个统一的接口。

   3.都不能使用static标示符(原因:虚函数是动态绑定的)

虚函数与纯虚函数的不同点:

   1.虚函数为了重载和多态的需要,已在类中被定义(即便定义为空),所以在子类中可以重写其功能,也可以不用改写。

     纯虚函数仅仅在类中被声明,其定义必须在子类中实现。

   2.虚函数可以被直接调用,也可以被子类重载以后以多态的形式调用。

     纯虚函数必须在子类中实现该函数才可以使用(原因:纯虚函数在类中仅是一个声明)

   3.虚函数的声明:virtual 函数名( )

                 {

                     body;

                 }

     纯虚函数的声明:virtual 函数名( ) = 0;

   4.含有纯虚函数的类被称为抽象类,而只含有虚函数的类不能被称为抽象类。

   5.如果一个类中含有纯虚函数,那么对此类进行的任何实例化的语句都将导致错误(原因:抽象基类不能被直接调用)。

     以下为一个简单的虚函数和纯虚寒数的示例:

  

     
     class father
     {
      public:
          virtual void test_1(){cout<<"It is a father class!";}

          virtual void test_2 = 0;
         
          ...
     }

     class son:public father
     {
         void test_1(){cout << "It is a father class too!"}
         
         void test_2(){cout << "It is a sub class!"}
     }

     int main(void)
     {
         father *test;

         test = new son;

         test -> test_1();

         test -> test_2();

         return 0;
     }
      


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值