首页 > 其他 > 详细

多态.xml

时间:2014-10-18 00:32:45      阅读:276      评论:0      收藏:0      [点我收藏+]

多态

?

何为多态?

多态即是多种形态。

多种形态是指一个事物的某种属性会出现多个不同的状态。

比如:云的形状??可能是圆?可能是椭圆??可能是马的样子?也可能是牛的样子

又如鸟:??有的鸟会飞?有的鸟不会飞,有的鸟飞的高、有的鸟飞的低

C++中?实现?即是?:?一个接口,多种实现

运行时多态

?

在计算机中,如何描述这种多态?

主要的使用方法乃是?继承机制

比如云是基类,各种形状的云是派生类,比如鸟是基类,各种飞行的鸟是派生类。

?

程序要调用各个派生类的某个描述公共属性的方法,如果为每个派生类写一个调用方法,显然是很浪费的。

由此,C++引人了虚函数概念。

?

通过虚函数,将派生类的调用,转换为基类指针的操作。

为基类指针赋予不同派生类对象的地址,就可以操纵各个派生类中继承自基类的虚函数。

这样,只需对基类指针处理,就实现了操作各个派生类。

?

示例:

?
class?Bird
{
public:
?????????virtual?void?fly()
?????????{
???????????????????cout<<"Bird?Can?Fly"<<endl;
?????????}
};
?
class?Duck:public?Bird
{
public:
?????????void?fly()
?????????{
???????????????????cout<<"DUCK?can?not?fly"<<endl;
?????????}
};
?
class?Chicken:public?Bird
{
public:
?????????void?fly()
?????????{
???????????????????cout<<"Chicken?can?not?fly"<<endl;
?????????}
?
};
?
?
void?Fly(Bird?*pFly)
{
?????????pFly->fly();
}
?
?
?
?
?
?
?
void?main()
{
?
?
?????????Bird?bird;
?????????Duck?duck;
?????????Chicken?chicken;
?
?????????Fly(&bird);
?????????Fly(&duck);
?????????Fly(&chicken);
?
?
?
?
?
?????????while?(getchar()!=‘0‘)
?????????{
?????????}???????
}
?
?

静态多态

?

静态多态是指通过模板函数的方式实现多态。

?

适用于:各个类是单独定义?但是它们具有相同的操作,这个相同的操作便可通过模板函数的方式调用

?

比如:

?
Template?<class?T>
Void?DoSomething(T?&t)
{
t.doSomething();
}
?

示例:

class?Duck:
?{
public:
?????????void?fly()
?????????{
???????????????????cout<<"DUCK?can?not?fly"<<endl;
?????????}
};
?
class?Chicken:
{
public:
?????????void?fly()
?????????{
???????????????????cout<<"Chicken?can?not?fly"<<endl;
?????????}
?
};
?
template?<class?T>
?
void?Fly(T?&t)
{
?????????t.fly();
?
}
?
?
?????????Duck?duck;
????????Chicken?chicken;
?
?????????Fly(duck);????????????//编译器在编译时?会自动处理为?Fly<Duck>()
????????Fly(chicken);???????

重载

重载指的是函数的重载,在编译时就确定了。在此不再做介绍

本文使用?书画小说软件?发布,内容与软件无关,书画小说软件?更惬意的读、更舒心的写、更轻松的发布。

多态.xml

原文:http://www.cnblogs.com/shuilan0066/p/4032257.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!