• c++多态性---虚函数


    虚函数与纯虚函数的区别:

    1、拥有虚函数的类可以声明对象,但拥有纯虚函数的类不可以声明对象(只能声明一个指针,并且不能给其分配内存),并且将这个类称为抽象类

    特点:

    1、虚函数是动态绑定的基础。

    2、是非静态的成员函数。 在类的声明中,在函数原型之前写virtual。(不能声明为静态函数)

    3、virtual 只用来说明类声明中的原型,不能用在函数实现时。

    4、具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。

    5、本质:不是重载声明而是覆盖。

    6、调用方式:通过基类指针或引用,执行时会 根据指针指向的对象的类,决定调用哪个函数。

    虚函数范例:

    #include <iostream>
    using namespace std;class B0    //基类B0声明
    {public:    //外部接口    
    virtual void display() //虚成员函数     
    {cout<<"B0::display()"<<endl;} };
    class B1: public B0    //公有派生
    { public:       
    void display()  
    {  cout<<"B1::display()"<<endl;  }};
    class D1: public B1    //公有派生
    { public:      
    void display() {  cout<<"D1::display()"<<endl;  }};
    void fun(B0 *ptr)    //普通函数
    {    ptr->display();    }
    
    int main()    //主函数
    {    B0 b0,  *p;    //声明基类对象和指针
        B1 b1;    //声明派生类对象
        D1 d1;    //声明派生类对象
        p=&b0;
        fun(p);    //调用基类B0函数成员
        p=&b1;
        fun(p);    //调用派生类B1函数成员
        p=&d1;
        fun(p);    //调用派生类D1函数成员
    }
    结果:
    B0::display()
    B1::display()
    D1::display()
  • 相关阅读:
    以结构体为键值的map
    Luogu P1251 餐巾计划问题 (最小费用最大流、拆点)
    CodeForces
    CodeForces
    中缀表达式转后转表达式
    CodeForces
    Educational Codeforces Round 100
    2020年12月杂题选做
    2020年11月杂题选做
    CF542E Playing on Graph
  • 原文地址:https://www.cnblogs.com/defen/p/5345070.html
Copyright © 2020-2023  润新知