多态性(polymorphism)

polymophism多态:

poly-多种

morph-形态

多态的表述:具有不同功能的函数可以用同一个函数名

多态的效果:用一个函数名调用不同内容的函数,完成不同的工作。


多态性形式:

静态多态性:函数重载和运算符重载(实际就是函数的重载)实现的多态性属于静态多态性

为什么是静态多态性:在生成目标代码之前,在编译的时候系统就能决定调用的是哪个函数,因此又称编译时的多态性。(根据函数参数的类型以及个数等确定,比如:max(2.5,3.4,1.2)因为参数是三个doubke型,所以知道是调用double max(double a,double b,double c)这个函数)

动态多态性:程序运行过程中才动态地确定操作所针对的对象。(编译的时候确定不了),因此又称运行时的多态性。



基类类型的指针,在访问的时候,只能使用基类中的成员,只能执行基类中的成员函数;即使这个指针被指向了派生类对象,但是也只能访问派生类中

继承自基类的成员。

引用也是同理的。基类类型的引用,即使引用的是派生类对象,但是也只能访问派生类中继承自基类的成员。


在用同一个名字完成不同功能的过程中,有两种情况,一种是函数重载,一种是函数覆盖:

operator<<()是函数重载-------------静态多态:

ostream &operator<<(ostream &output, const Point &p)

ostream &operator<<(ostream &output, const Circle&c)

ostream &operator<<(ostream &output, const Cylinder &cy)

从上面的三个函数可知,它们的函数参数类型不同,所以编译时就可以确定调用哪个;

area()是函数覆盖,因为它们函数参数个数,函数参数类型,函数名一样,但是在类族的不同层次,也就是在不同的类。这种情况就是一个接口(成员函数的声明),多个方法!!!---------可以做到动态多态

double Circle::area()const{}

double Cylinder::area()const{}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值