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++多态的作用

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

  • 深刻剖析之c++博客文章

    三大特性 封装、继承、多态 多态 C++ 虚函数表解析C++多态的实现原理 介绍了类的多态(虚函数和动态/迟绑定)...

  • (转)虚函数表

    转载 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,...

  • C++虚函数注意事项以及构成多态的条件

    C++ 虚函数对于多态具有决定性的作用,有虚函数才能构成多态。 虚函数注意事项 只需要在虚函数的声明处加上 vir...

  • C++虚函数

    什么是虚函数 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例...

  • 多态的C++实现

    多态的C++实现 1 多态的原理 什么是多态?多态是面向对象的特性之一,只用父类指针指向子类的对象。 1.1 多态...

  • C++ 的多态(Polymorphism), virtual f

    多态 c++支持两种多态,编译时多态和运行时多态但其实编译时多态根本不是真正的多态,编译时多态就是函数的重载,ov...

  • 虚函数、纯虚函数

    1.虚函数(impure virtual) C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类...

  • C++总结之多态与虚函数

    1.何为多态??多态的作用?多态的概念:一个接口,多种方法多态的作用:封装可以是得代码模块化;继承可以扩展已经存在...

  • C++第六篇多态

    C++中的多态性分为编译时多态性和运行时多态性,编译时多态通过函数重载和模板体现,运行多态通过虚函数体现编译、连接...

网友评论

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

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