• C++中的纯虚函数和抽象类


    纯虚函数

    纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本

    纯虚函数为个派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分

    纯虚函数声明语法:

    virtual 类型 函数名(参数表) = 0;
    #include <iostream>
    using namespace std;
    
    class Figure
    {
    public:
        virtual void getArea() = 0;
    };
    
    class Circle: public Figure
    {
    private:
        double r;
    public:
        Circle(int r1):r(r1){}
        
        virtual void getArea()
        {
            cout<<"圆形面积:"<<3.14 * r * r<<endl;
        }
    };
    
    class Square: public Figure
    {
    private:
        double edge;
    public:
        Square(int e):edge(e){}
    
        virtual void getArea()
        {
            cout<<"正方形面积:"<<edge * edge<<endl;
        }
    };
    
    void getArea(Figure *base)
    {
        base->getArea();
    }
    
    int main()
    {
        Circle c(10);
        Square s(10);
    
        getArea(&c);
        getArea(&s);
    
        return 0;
    }
    View Code

    注意:

    1,含有纯虚函数的类,称为抽象基类,不可实例化。 即不能创建对象,存在的意义就是被继承,提供族类的公共接口。

    2,纯虚函数只有声明,没有实现,被“初始化”为 0

    3,如果一个类中声明了纯虚函数,而在派生类中没有对该函数定义,则该虚函数在派生类中仍然为纯虚函数,派生类仍然为纯虚基类。

    抽象类

    一个具有纯虚函数的基类称为抽象类

    绝大多数面向对象语言都不支持多继承,绝大多数面向对象语言都支持接
    口的概念
    C++中没有接口的概念,C++中可以使用纯虚函数实现接口
    接口类中只有函数原型定义,没有任何数据的定义.

  • 相关阅读:
    leetcode Super Ugly Number
    leetcode Find Median from Data Stream
    leetcode Remove Invalid Parentheses
    leetcode Range Sum Query
    leetcode Range Sum Query
    leetcode Minimum Height Trees
    hdu 3836 Equivalent Sets
    hdu 1269 迷宫城堡
    hud 2586 How far away ?
    poj 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/xumaomao/p/12932469.html
Copyright © 2020-2023  润新知