码迷,mamicode.com
首页 > 其他好文 > 详细

多态.xml

时间:2014-10-18 00:33:38      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   io   os   ar   使用   sp   on   

多态

?

何为多态?

多态即是多种形态。

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

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

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

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

标签:style   http   color   io   os   ar   使用   sp   on   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!