C++之虚函数和多态

1.虚函数

      简单的说,虚函数就是在函数原型前加上virtual关键字。函数一旦被声明为虚函数,即使类在改写它的时候没有将其声明为虚函数,它从该点的继承层次结构中仍然是虚函数。如果基类中一个函数被声明为虚函数,在若干子类中有着不同的实现,那么我们在创建若干子类的不同对象时,可以用基类的指针或者引用来指明子类对象并且调用相应子类的函数。

虚函数的定义方式如下:

virtual  函数返回类型  虚函数名称(参数列表)

规定如下: ◎类的静态成员函数不可以定义为虚函数;

                ◎类的构造函数不可以定义为虚函数;

                ◎非类的函数不可以定义为虚函数。

2.纯虚函数

      纯虚函数是在声明虚函数时初始化为0的函数。

Virtual  void print()  const   =   0 ;

3.抽象类

      简单的说,带有一个或多个未实现的纯虚函数的类是抽象类。如果一个类继承自一个抽象类,但它没有全部实现父类里面所有的纯虚函数,那么那些纯虚函数在子类中仍然是纯虚的,这个子类仍然是抽象类,仍然不能实例化对象。

      抽象类是一种特殊的类,只能作为基类来使用,其纯函数的实现由派生类给出。虽然不能实例化抽象类,但我们可以声明一个抽象类的指针和引用,在实例化对象时,可以用不同的子类来实现,从而实现多态性操作。只有当派生类将基类中的所有的纯虚函数都实现的时候,它才不再是抽象类。

4.多态

      从广义上说,多态性是指一段程序能够处理多种类型对象的能力。在C++语言中,多态性可以通过强制多态、重载多态、类型参数化多态、包含多态等多种实现形式。所谓多态就是通过类的继承,使得同一个函数可以根据调用他的对象的类型作出不同的响应。它也继承和重载共同构成面向对象的3大编程特性。多态性通过虚函数来实现,当我们用基类的指针来调用虚函数时,程序会根据对象的属性选择其自身的函数实现。即使程序员不知道对象类型,程序仍然可以作出适合该对象类型的行为。

      C++语言支持两种类型的多态:一种是编译时的多态(静态多态),另一种是运行时的多态(动态多态)。在编译时的多态是通过静态联编实现的,而在运行时的多态则是通过动态联编实现的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值