c++多态的作用

作者: 李药师_hablee | 来源:发表于2019-03-29 09:34 被阅读0次

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

    • 向上转换数据类型
    • 用向上转换後的指针调用派生类内的同名成员函数
    • 使用引用调用同名成员函数
    • 间接调用同名成员函数

    在基类成员函数前加上关键字 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下编译运行成功

    相关文章

      网友评论

        本文标题:c++多态的作用

        本文链接:https://www.haomeiwen.com/subject/ulykbqtx.html