多态的应用原理笔记

如何解释多态:

静态(编译时期)的多态:
函数重载
bool compare (int, int) {}
bool campare(double, double) {}
在编译阶段确定好调用的函数版本
campare(10,20); call compare_int_int
campare(10.5,10.5); call campare_double_doubel

模板(函数模板与类模板):
template
bool campare(T a, T b) {}
campare(10,20); =>实例化一个compare
campare(10.5,10.5); =>实例化一个compare

动态(运行时期)的多态:
在继承结构中,基类的指针或引用指向派生类对象,通过该指针或引用调用同名覆盖方法(虚函数),基类指针指向哪个派生类对象,就会调用哪个派生类的覆盖方法,称为为多态。
多态底层是通过动态绑定来实现的。

#include <iostream>

using namespace std;
class Animal
{
public:
    Animal(string name) :_name(name){}
    virtual void show(){}//虚函数接口
protected:
    string _name;
};
class cat:public Animal
{
public:
    cat(string n) :Animal(n) {}
    void show() { cout <<  _name << "miao miao ! "<< endl; }//派生类进行重写
};
class dog :public Animal
{
public:
    dog(string n) :Animal(n) {}
    void show() { cout << _name << "wang wang ! " << endl; }
};
void show(Animal *p)//外部统一的接口
{
    p->show();//虚函数 动态绑定
}
int main()
{
    cat cat("mimi");
    dog dog("erha");
    show(&cat);
    show(&dog);
    return 0;
}

继承的好处:
1.可以做代码的复用
2.在基类中给派生类提供统一的基函数接口,让派生类进行重写,就可以使用多态了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值