当前位置: 首页 > news >正文

《c++》纯虚函数和抽象类

 

在C++中,纯虚函数和抽象类是面向对象编程中的重要概念,用于实现多态性和接口定义

  1. 1.纯虚函数(Pure Virtual Function)

    • 纯虚函数是在基类中声明的虚函数,但没有提供实现。它们以关键字声明,并在函数声明的末尾加上来指示它是一个纯虚函数。virtual= 0
    • 纯虚函数的存在使得基类成为抽象类,无法实例化对象。
    • 派生类必须提供纯虚函数的实现才能实例化对象。
    • 纯虚函数用于定义接口,要求派生类提供特定的行为实现。
class Base {
public:
    virtual void show() = 0; // 纯虚函数
};

class Derived : public Base {
public:
    void show() override {
        cout << "Derived class implementation" << endl;
    }
};

2.抽象类(Abstract Class)

  • 包含纯虚函数的类被称为抽象类。
  • 抽象类不能被实例化,即不能创建抽象类的对象。但可以声明抽象类的指针和引用。
  • 抽象类用于定义通用接口和行为,要求派生类提供具体的实现。
class Shape {
public:
    virtual void draw() = 0; // 纯虚函数
};

class Circle : public Shape {
public:
    void draw() override {
        cout << "Drawing a circle" << endl;
    }
};

class Rectangle : public Shape {
public:
    void draw() override {
        cout << "Drawing a rectangle" << endl;
    }
};

3.完整案例解析

#include <iostream>
using namespace std;
//纯虚函数和抽象类

class Base {
public:

	//纯虚函数
	//只要有一个纯虚函数,这个类称为抽象类
	//抽象类特点:
	//1.抽象类不能实例化对象
	//2.抽象类的子类 必须要重写父类中的纯虚函数,否则也属于抽象类
	
	virtual void func() = 0;


};

class Son:public Base {
public:
	virtual void func() {
	cout << "Son::func()" << endl;
	
	
	
	}


};

void test01() {
	//Base b; // 报错,不能实例化抽象类
	//Son s;子类必须重写父类中的纯虚函数,否则无法实例化对象

	Base *p = new Son; // 指针指向子类对象,可以调用子类中的方法
	p->func(); // 调用子类中的方法

}


int main() {
	test01();


	return 0;
}

相关文章:

  • C#WPF控件大全
  • jenkins拉取java远程日志
  • RabbitMQ介绍
  • 20.Ubuntu下安装GCC
  • 1.7.2 python练习题15道
  • 【@changesets/cli】变更集实战教程
  • JavaEE之网络初识(网络中的一些基本概念)详解
  • iOS开发 - 转源码 - __weak问题解决
  • 【WPF应用7】 基本控件-Grid 布局的详解与示例
  • 【小尘送书-第十五期】Excel函数与公式应用大全for Excel 365 Excel
  • jvm高级面试题-2024
  • Vue3气泡卡片(Popover)
  • docker容器退出后数据丢失怎么恢复?
  • linux 命令行下的计算器
  • 也来混rt_thread了,碰到一个内存释放问题,顺便聊聊思路
  • 高阶SQL语句(二)
  • 电脑WinSxS文件夹太大,如何清理?分享四种方法
  • 【循环神经网络rnn】一篇文章讲透
  • C++入门:类和对象(上)
  • 【boost_search搜索引擎】2.正排索引和倒排索引
  • https://app.hackthebox.com/machines/Inject
  • Spring —— Spring简单的读取和存储对象 Ⅱ
  • 渗透测试之冰蝎实战
  • Mybatis、TKMybatis对比
  • Microsoft Office 2019(2022年10月批量许可版)图文教程
  • 《谷粒商城基础篇》分布式基础环境搭建
  • 哈希表题目:砖墙
  • Vue 3.0 选项 生命周期钩子
  • 【车载嵌入式开发】AutoSar架构入门介绍篇
  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读