pre{
line-height:1;
color:#1e1e1e;
background-color:#f0f0f0;
font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;}
.selfFuc{color:#800080;}
.bool{color:#d2576f;}
.condition{color:#000080;font-weight:bold;}
.key{color:#000080;}
.var{color:#800000;font-style:italic;}
.Digit{color:#ff00ff;font-weight:bold;}
.includePre{color:#1e1e1e;}
.operator {color:#008000;font-weight:bold;}
多态
何为多态?
多态即是多种形态。
多种形态是指一个事物的某种属性会出现多个不同的状态。
比如:云的形状 可能是圆 可能是椭圆 可能是马的样子 也可能是牛的样子
又如鸟: 有的鸟会飞 有的鸟不会飞,有的鸟飞的高、有的鸟飞的低
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);
重载
重载指的是函数的重载,在编译时就确定了。在此不再做介绍
本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。