C++多态性

[复制链接]
查看11 | 回复3 | 2007-2-24 20:22:18 | 显示全部楼层 |阅读模式
一楼的那是模板,二楼的那是重载。多态应该指virtual关键字,主要就表现为基类的虚函数和继承类的override(重写)。比如:class ball{public:virtual void play(){}; // 球可以踢可以打}class basketball:public ball{public:void play(){};// override 篮球只可以打}class football:public ball{public:void play(){}; // override 足球只可以踢}根据继承的“is-a”关系可以知道,足球和篮球都是球,的确如此,但相对于球这个类来说足球和篮球又各有它们的自己的特点,比如它们各自的玩法就不一样,所以override也就是重写,是把基类的“普适”改变为依据各子类的特点的“特殊”,并允许各类的该特点共同存在,在这个例子中,也就是多形态的play()函数。因此称为多态。如果你去除ball类中void play()之前的virtual关键字的话,那么子类basketball和football的play()就把基类的play()给隐藏了起来,这样的话在子类upcast的时候调用的就将是子类的play()而无法调用基类的play()。所以我觉得C++中的多态主要指的就是virtual。
回复

使用道具 举报

千问 | 2007-2-24 20:22:18 | 显示全部楼层
xxx( abc)类似这种函数,他可以接收任何类型的参数,这就是多态。
回复

使用道具 举报

千问 | 2007-2-24 20:22:18 | 显示全部楼层
函数重载和运算符重载
回复

使用道具 举报

千问 | 2007-2-24 20:22:18 | 显示全部楼层
分为模版的静态多态表现和类继承的动态绑定两种
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行