多态.xml
多态
何为多态?
多态即是多种形态。
多种形态是指一个事物的某种属性会出现多个不同的状态。
比如:云的形状 可能是圆 可能是椭圆 可能是马的样子 也可能是牛的样子
又如鸟: 有的鸟会飞 有的鸟不会飞,有的鸟飞的高、有的鸟飞的低
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);
重载
重载指的是函数的重载,在编译时就确定了。在此不再做介绍
本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。