• c++ 虚函数 纯虚函数 抽象类


       虚函数:

            声明虚函数的方法是在基类的成员函数原型前加上关键字virtual。简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。

       其格式如下:

    只需改变基类

    class  类名

    {......

    virtual 类型 函数名 (参数表):

    .......

    };

    纯虚函数:

    1. 在基类中只声明虚函数而不给出具体的函数定义体,将它的具体定义放在各派生类中,称此虚函数为纯虚函数。
    2. 通过该基类的指针或引用就可以调用所有派生类的虚函数,基类只是用于继承,仅作为一个接口,具体功能在派生类中实现。
    3. 形式:

              virtual 类型 函数名(参数表)=0;

    抽象类:

          带有纯虚函数的类成为抽象类:

    class 类名

    {

    virtual 类型 函数名(参数表)=0;//纯虚函数

    ..........

    };

    注意:

    • 不能声明抽象类的对象,但可以声明指向抽象类的指针变量和引用变量。
    • 引入抽象类的目的,主要是为了能将相关类组织在一个类继承结构中,并通过抽象类来为这些相关类提供统一的操作接口。

    举例说明:

    声明一个动物类

    #ifndef Animal_H
    #define Animal_H
    
    #include <iostream>
    using namespace std;
    class Animal
    {
    public:
        virtual  void cry()=0;
        virtual void action()=0;
        //{cout<<"zooooo"<<endl;}
    
    };
    #endif

    声明一个猫类继承与动物类

    #include "animal.h"
    
    
    class Cat:public Animal
    {
    public:
        void cry(){cout<<"miaomiao"<<endl;}
        void action(){cout<<"pashu"<<endl;}
    
    };

    声明一个Dog类继承与Aniaml类

    #include "animal.h"
    
    
    class Dog:public Animal
    {
    public:
        void cry(){cout<<"wangwang"<<endl;}
        void action(){cout<<"zuandong"<<endl;}
    };

    mian类

    #include "animal.h"
    #include "cat.h"
    #include "dog.h"
    
    void display(Animal &p);
    
    void main()
    {
        //Animal a;
        Cat c;
        Dog d;
        //c=new Cat();
        //d=new Dog();
    
    
        //display(a);
        display(c);
        display(d);
        //c.cry();
    
    }
    void display(Animal &p)
    {
        p.cry();
        p.action();
    
    }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

  • 相关阅读:
    372. Super Pow
    224. Basic Calculator + 227. Basic Calculator II
    263. Ugly Number + 264. Ugly Number II + 313. Super Ugly Number
    169. Majority Element
    225. Implement Stack using Queues + 232. Implement Queue using Stacks
    551. Student Attendance Record I + Student Attendance Record II
    765. Couples Holding Hands
    547. Friend Circles
    535. Encode and Decode TinyURL
    87. Scramble String
  • 原文地址:https://www.cnblogs.com/flashweb/p/2814489.html
Copyright © 2020-2023  润新知