C++的抽象类

news/2025/2/21 7:27:24/

一、什么是抽象类

        至少拥有一个纯虚函数的类叫做抽象类。那什么是纯虚函数呢?纯虚函数是指用virtual关键字修饰的,在具体实例化时候才实现具体内容的函数,编写方式如下:

virtual void V_Fun() = 0;

当开头用virtual关键字修饰,并且在结尾赋值为0的函数,我们就可以称之为纯虚函数

二、抽象类注意事项

1. 抽象类只能用作其他类的基类

2. 不能使用抽象类定义对象

3. 抽象类可以拥有构造方法和析构方法

4. 抽象类不可以作为参数类型,返回值类型或显示转换类型

三、小例子(动物:猫、狗)

        以下是一个关于抽象类的小例子,以便具体的理解,Animal类便是一个拥有两个纯虚函数的抽象类,而Dog和Cat是继承Animal类的两个子类。

#include <iostream>
#include <string>using namespace std;class Animal {protected : string type;string sound;public :Animal(string type, string sound) {this->sound = sound;this->type = type;}virtual void yell(int degree) = 0;virtual string action() = 0;
}; class Dog : public Animal {public :Dog(string type, string sound) : Animal(type, sound) {}virtual void yell(int degree) {cout << this->type << " : ";for(int i = 0; i < degree; i++) {cout << this->sound << " "; }cout << endl;}virtual string action() {return "啃了啃骨头";}
};class Cat : public Animal {public :Cat(string type, string sound) : Animal(type, sound) {}virtual void yell(int degree) {cout << this->type << " : ";for(int i = 0; i < degree; i++) {cout << this->sound << " "; }cout << endl;}virtual string action() {return "玩了玩毛线球";}
};int main() {Dog dog("小狗", "汪汪");Cat cat("小猫", "喵喵");cout << "小狗动作:" << dog.action() << endl;dog.yell(2);cout << "小猫动作:" << cat.action() << endl;cat.yell(5);return 0;
}


http://www.ppmy.cn/news/1366883.html

相关文章

冥想第一千零八十五天

1.周五 今天中午给溪溪送了蛋糕&#xff0c;溪溪非常高兴。 2.上午胸疼了一上午&#xff0c;中午好一点了。 3.项目全力以赴的一天&#xff0c;感谢父母&#xff0c;感谢朋友&#xff0c;感谢家人&#xff0c;感谢不断进步的自己。

Unity(第十八部)物理力学,碰撞,触发、关节和材质

1、重力 刚体组件 英文中文描述RigidBody刚体组件physics->rigidbody &#xff0c;刚体组件使一个物体有了质量&#xff0c;重力等。&#xff0c;use gravity 勾选后&#xff0c;物体才会受到重力&#xff0c;会自动下落&#xff0c;取消勾选就不会。&#xff0c;&#xf…

SQL进阶(三):Join 小技巧:提升数据的处理速度

复杂数据结构处理&#xff1a;Join 小技巧&#xff1a;提升数据的处理速度 本文是在原本sql闯关的基础上总结得来&#xff0c;加入了自己的理解以及疑问解答&#xff08;by GPT4&#xff09; 原活动链接 用到的数据&#xff1a;链接 提取码&#xff1a;l03e 目录 1. 课前小问…

【airtest】自动化入门教程(一)AirtestIDE

目录 一、下载与安装 1、下载 2、安装 3、打开软件 二、web自动化配置 1、配置chrome浏览器 2、窗口勾选selenium window 三、新建项目&#xff08;web&#xff09; 1、新建一个Airtest项目 2、初始化代码 3、打开一个网页 四、恢复默认布局 五、新建项目&#xf…

lc 每日一题 2024 - 03 - 01 划分型dp

链接 : . - 力扣&#xff08;LeetCode&#xff09; 思路 : 子集划分型dp , 设置dp[i1]表示前i个数字能否有效划分&#xff1b; 那么一个划分好的数组 两个相等的数字 &#xff0c; 新形成的数组也是有效划分数组; 同理&#xff0c;加上三个相等 或 三个递增的数字 &…

Spring 学习记录

Spring 学习记录 1. Spring和SpringFrameWork1.1 广义的Spring2.1 狭义的Spring2.3 SpringFrameWork / Spring框架图 2. Spring IOC容器(即上图中的Core Container)2.1 相关概念 (IOC DI 容器 组件)2.2 Spring IOC容器的作用2.3 Spring IOC容器接口和具体实现类 3. Spring IOC …

批量复制并重命名文件夹,一键实现目录更新!让文件夹管理变得如此简单!

在日常生活和工作中&#xff0c;我们经常需要处理大量的文件夹&#xff0c;例如备份资料、整理项目文件等。然而&#xff0c;传统的文件夹管理方式往往繁琐且易出错&#xff0c;特别是在需要批量复制并重命名文件夹时。为了解决这一难题&#xff0c;我们特别推出了一款批量复制…

MySQL5.7.44版本压缩包在Win11系统快速安装

一.背景 主要还是为了公司的带徒弟任务。我自己也喜欢MySQL的绿色版本。 1.软件版本说明 MySQL版本&#xff1a;5.7.44 压缩包版本&#xff0c;相当于绿色版。当然&#xff0c;你也可以使用window系统的Installer版本去安装。 操作系统&#xff1a;Win11家庭版 二.MySQL软…