zoukankan      html  css  js  c++  java
  • 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++中可以使用纯虚函数实现接口
    接口类中只有函数原型定义,没有任何数据的定义.

  • 相关阅读:
    程序、进程、线程区别与联系
    SQL常用知识与必须掌握的面试常问SQL语句
    快速搭建一个基于react的项目
    原生js判断设备类型
    在vue项目中设置BASE_URL
    纯前端实现数据导出excel文件
    原生js实现拖拽功能
    使用Echarts实现折线图的一点总结
    在vue项目中显示实时时间(年月日时分秒)
    在vue项目中使用MD5.js
  • 原文地址:https://www.cnblogs.com/xumaomao/p/12932469.html
Copyright © 2011-2022 走看看