【C++】—多态(上)动态多态

一、多态
1、 概念:同一事物表现出的多种形态,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
2、 举例子:

#include<windows.h>
class WashRoom
{
public:
    void GoToManWashRoom()
    {
        cout << "Man ---> Please Left" << endl;
    }
    void GoToWomanWashRoom()
    {
        cout << "Woman ------> Please Right" << endl;
    }
};

class Person
{
public:
    virtual void GoToWashRoom(WashRoom& wc) = 0;
};

class Man :public Person
{
public:
    virtual void GoToWashRoom(WashRoom& wc)
    {
        wc.GoToManWashRoom();
    }
};

class Woman :public Person
{
public:
    virtual void GoToWashRoom(WashRoom& wc)
    {
        wc.GoToWomanWashRoom();
    }
};

void TestWashRoom()
{
    WashRoom wc;
    Person* p = NULL;
    for (int i = 0; i <10; ++i)
    {
        if ((rand()) & 0x01)
            p = new Man;
        else
            p = new Woman;
        p->GoToWashRoom(wc);
        delete p;
        Sleep(1000);
    }
}

int main()
{
    TestWashRoom();
    return 0;
}

3、 多态的分类
(1)静态多态:编译器在编译期间来确定程序的行为(确定具体调用哪个函数)

A:函数重载

B:泛型编程

(2)动态多态:程序运行时来确定程序的行为(确定具体调用哪个函数)
4、 动态多态实现条件
(1) 基类中必须包含虚函数,在派生类中必须对基类的虚函数进行重写
(2) 必须通过基类指针或引用调用虚函数


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值