C++虚函数的概念

虚函数:

虚函数是一种在基类定义为virtual的函数,并在一个或多个派生类中再定义的函数。虚函数的特点是,只要定义一个基类的指针,就可以指向派生类的对象。

注:无虚函数时,遵循以下规则:C++规定,定义为基类的指针,也能作指向派生类的指针使用,并可以用这个指向派生类对象的指针访问继承来的基类成员;但不能用它访问派生类的成员。

l 使用虚函数实现运行时的多态性的关键在于:必须通过基类指针访问这些函数。

l 一旦一个函数定义为虚函数,无论它传下去多少层,一直保持为虚函数。

l  把虚函数的再定义称为过载(overriding)而不叫重载(overloading)。

l  纯虚函数:是定义在基类中的一种只给出函数原型,而没有任何与该基类有关的定义的函数。纯虚函数使得任何派生类都必须定义自己的函数版本。否则编译报错。

l  纯虚函数定义的一般形式:

Virtual type func_name(参数列表)=0;

l  含有纯虚函数的基类称为抽象基类。抽象基类又一个重要特性:抽象类不能建立对象。但是抽象基类可以有指向自己的指针,以支持运行时的多态性。


l  虚函数范例:

#include <iostream>

#define ECHO(str) std::cout << str

#define ECHOLN(str) std::cout << str<< std::endl

/* run this program using the consolepauser or add your own getch, system("pause") or input loop */

class Base{

         public:

                       virtual void who(){

                        ECHOLN("我是基类!");

                      }

};

class deriv_1:public Base{

         public:

                   voidwho(){

                            ECHOLN("我是子类deriv_1");

                   }

                  

         };

class deriv_2:public Base{

         public:

                  void who(){

                            ECHOLN("我是子类deriv_2");

                   }

};

 

int main(int argc, char** argv) {

         classBase *b,b0;

         classderiv_1 d1;

         classderiv_2 d2;

        

         b= &b0;

         b->who();

        

         b= &d1;

         b->who();

        

         b= &d2;

         b->who();

        

         return0;

}

 

输出:

我是基类!
我是子类deriv_1
我是子类deriv_2

  • 10
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值