C+学习之多态篇(虚函数)

一、什么事多态?

多态的定义:相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。

二、多态分类:

定义不太好理解,其实或字前后说明了两个不同类型的多态形式:即静态多态(早绑定)和动态多态(晚绑定)。

1.静态多态(早绑定)

看下图中代码:

两个calcArea()函数互为重载,互为重载的函数在main()函数中调用的时候会根据参数的不同来调用各自的函数,这种调用关系是很早就确定下来的,即在程序运行之前,在编译阶段就已经确定下来要使用哪个函数了,这种情况就叫做早绑定或静态多态。



2.动态多态



动态多态的一个特性就是用父类的指针去指向子类的对象,并用父类的指针去调用相应的calcArea()函数去执行求面积的操作,如果父类的calcArea()函数不是virtual,那么下面的调用代码只会调用父类的calcArea()函数,没有实现多态;如果父类的calcArea()函数已经声明为virtual的,那么下面的调用代码就会调用各个子类的calcArea()函数,即对不同的子类对象实行相同的指令,做出了不同的动作响应。

注意:

(1)父类的calcArea()函数必须和子类的calcArea()函数返回值参数名称都一模一样才行,不然无法构成多态;

(2)父类的calcArea()函数声明为virtual以后,虚的特性是可以继承的,即子类的calcArea()函数写不写virtual,都已经是虚函数了,但是好的习惯是写上,明了。



多态几个特点简单归结如下:

(1)多态具体到语法是指:使用父类指针指向子类对象,并可以通过该指针调用子类的方法;

(2)产生多态的基础是存在继承关系,没有继承就没有多态;

(3)必须使用virtual才能在多个子类之间建立多态关系。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值