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

 

posted @   xd_xumaomao  阅读(272)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示