我家丫头的cpp

c++多态的作用

2019-03-29  本文已影响0人  李药师_hablee

作用是 一个接口,多种方法。虽然重载也算是一种多态,但是是在编译时就已经确定下来了,是一种静态多态。而多态则是一种动态多态,在程序运行时刻才确定下来

在基类成员函数前加上关键字 virtual,告知编译器此函数参与多态运算,在运行时动态调用

一个总结上述情况的代码例子

#include<iostream>
using namespace std;

class Shape
{
private:
    int n;
public:
    Shape():n(5){}
    ~Shape(){}

    virtual void Draw() { cout << "画一个图形" << endl; }
    virtual void Area() { cout << "计算图形面积" << endl; }
    virtual void Erase() { cout << "将图形清除" << endl; }

    void Size() { Area(); }
};

class Cube:public Shape
{
private:
    int e;
public:
    Cube() :e(2) {}
    ~Cube() {}
    virtual void Draw() { cout << "画一个立方体" << endl; }
    virtual void Area() { cout << "计算立方体面积" << endl; }
    virtual void Erase() { cout << "清除立方体" << endl; }
};

void Update(Shape &S)
{
    S.Draw();
}

int main(void)
{
    Shape *pS;
    Cube C;
    pS = &C;
    cout << "执行Update函数後:";
    Update(C);//引用方式调用
    cout << "执行Size函数後:";
    pS->Size();//间接调用
    cout << "执行Erase函数後:";
    pS->Erase();//指针调用

    system("pause");
    return 0;
}

输出

输出.PNG

没有加 virtual 关键字的输出

输出.PNG

本程序在 viusual studio 2017下编译运行成功

上一篇 下一篇

猜你喜欢

热点阅读