C++中面向对象的三大特性是什么?
封装(Encapsulation)
- 概念:封装是把数据和操作数据的函数绑定在一起,对数据的访问进行限制。通过将数据成员设为私有(private)或受保护(protected),并提供公共(public)的成员函数来访问和修改这些数据,从而隐藏了对象的内部实现细节。
- 示例:
class Rectangle { private:int length;int width; public:int getLength() { return length; }int getWidth() { return width; }void setLength(int l) {if (l > 0) length = l;}void setWidth(int w) {if (w > 0) width = w;}int area() { return length * width; } }; -
- 在这个
Rectangle类中,length和width是私有数据成员,外部代码不能直接访问它们。通过getLength、getWidth、setLength和setWidth这些公共成员函数来间接访问和修改数据,这样就实现了对数据的封装,保证了数据的安全性和完整性。
- 在这个
- 继承(Inheritance)
- 概念:继承允许创建一个新的类(派生类或子类),它从现有的类(基类或父类)继承属性和行为。这有助于代码的复用和扩展,派生类可以继承基类的成员变量和成员函数,并且可以根据需要添加新的成员变量和成员函数或者重写(override)基类的函数。
- 示例:
class Shape { public:virtual void draw() {std::cout << "Drawing a shape." << std::endl;} }; class Circle : public Shape { public:void draw() override {std::cout << "Drawing a circle." << std::endl;} }; -
- 在这里,
Circle类继承自Shape类。Shape类有一个draw函数,Circle类重写了这个draw函数,以提供特定于圆形的绘制行为。继承关系使得Circle类可以继承Shape类的特性,同时又能根据自身特点进行定制。
- 在这里,
- 多态(Polymorphism)
- 概念:多态是指同一种操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在 C++ 中有两种多态性:编译时多态(函数重载和模板)和运行时多态(虚函数)。运行时多态通过虚函数和指向基类的指针或引用实现,使得程序能够根据对象的实际类型来调用相应的函数。
- 示例(运行时多态):
Shape* shapePtr = new Circle(); shapePtr->draw(); - 当通过基类指针
shapePtr(它实际指向一个Circle对象)调用draw函数时,由于draw函数在Shape类中是虚函数,并且Circle类重写了这个函数,所以会调用Circle类中的draw函数,而不是Shape类中的draw函数。这体现了运行时多态,程序在运行时根据对象的实际类型来决定调用哪个函数。
相关文章:
C++中面向对象的三大特性是什么?
封装(Encapsulation) 概念:封装是把数据和操作数据的函数绑定在一起,对数据的访问进行限制。通过将数据成员设为私有(private)或受保护(protected),并提供公共ÿ…...
Centos 修改 yum 源为阿里云
参考 https://serverfault.com/questions/1161816/mirrorlist-centos-org-no-longer-resolve 修改 Centos 的 yum 源为阿里云 去阿里云 yum 镜像源官网: https://developer.aliyun.com/mirror/ 选择自己对应的操作系统,这里以 centos7 演示…...
Qt之Cannot create children for a parent that is in a different thread问题分析
问题 在多线程场景中,使用QSerialPort,QTcpSocket等QIODevice设备时出现报Cannot create children for a parent that is in a different thread 分析 QObject构造函数中会检查父对象的线程数据与当前对象的线程数据是否一致 static bool check_parent_thread(Q…...
均值滤波从图像复原角度的解释
廖老师说若将图像生成看作一个随机过程,均值滤波(Mean Filtering)可以视为在高斯噪声模型下的线性最小均方估计(Linear Minimum Mean Squared Error, LMMSE)或者极大似然估计(Maximum Likelihood Estimatio…...
Tableau数据可视化与仪表盘搭建-数据连接
目录 连接本地文件 课程操作 连接方式(实时/数据提取) 保存工作簿 筛选器 数据处理 连接数据有三种类型 第一种,连接到本地文件,例如Excel,csv,JSON等 第二种,连接到数据库,例…...
VsCode对Arduino的开发配置
ps:我的情况是在对esp32进行编译、烧录时,找不到按钮,无法识别Arduino文件,适合已经有ini文件的情况。 1.在vscode中安装拓展 2.打开设置,点击右上角,转到settings.json文件 3.复制以下代码并保存 {"…...
2024版idea 插件无法加载
解决方法: 进入Settings 点击plugins 选择 HTTP Proxy Settings 设置成如图所示...
VLMs之Agent之CogAgent:CogAgent的简介、安装和使用方法、案例应用之详细攻略
VLMs之Agent之CogAgent:CogAgent的简介、安装和使用方法、案例应用之详细攻略 导读:在2024年末,智谱于11月29日正式提出了GLM-OS概念,并推出了两款Agent产品——AutoGLM和GLM-PC。为了促进大模型Agent生态的发展,智谱决…...
Unity3D仿星露谷物语开发19之库存栏丢弃及交互道具
1、目标 从库存栏中把道具拖到游戏场景中,库存栏中道具数相应做减法或者删除道具。同时在库存栏中可以交换两个道具的位置。 2、UIInventorySlot设置Raycast属性 在UIInventorySlot中,我们只希望最外层的UIInventorySlot响应Raycast,他下面…...
Kafka优势剖析-消费者组、并行消费
目录 1. 消费者组(Consumer Group) 1.1 什么是消费者组? 1.2 消费者组的工作原理 1.3 消费者组的优势 2. 并行消费(Parallel Consumption) 2.1 什么是并行消费? 2.2 并行消费的工作原理 2.3 并行消…...
Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台
当今互联网发展迅速,应用程序的性能监控显得越来越重要。 DockerJmeterInfluxDBGrafana 是一种常用的性能监控平台,可以帮助开发者快速搭建一套可靠的监控体系。在本文中,我们将介绍如何使用这些工具搭建性能监控平台,以便开发人…...
Maven 详细配置:Maven settings 配置文件的详细说明
Maven settings 配置文件是 Maven 环境的重要组成部分,它用于定义用户特定的配置信息和全局设置,例如本地仓库路径、远程仓库镜像、代理服务器以及认证信息等。settings 文件分为全局配置文件(settings.xml)和用户配置文件&#x…...
【文本分类】bert二分类
import os import torch from torch.utils.data import DataLoader, Dataset from transformers import BertTokenizer, BertForSequenceClassification, AdamW from sklearn.metrics import accuracy_score, classification_report from tqdm import tqdm# 自定义数据集 class…...
单例模式-如何保证全局唯一性?
以下是几种实现单例模式并保证全局唯一性的方法: 1. 饿汉式单例模式 class Singleton { private:// 私有构造函数,防止外部创建对象Singleton() {}// 静态成员变量,存储单例对象static Singleton instance; public:// 公有静态成员函数&…...
设计模式学习笔记——结构型模式
文章目录 适配器模式 Adapter适用场景UML 桥接模式 Bridge适用场景UML 组合模式 Composite装饰模式 Decorator外观模式 Facade享元模式 Flyweight代理模式 Proxy 适配器模式 Adapter 适用场景 希望使用某个类, 但是其接口与其他代码不兼容时, 可以使用…...
WEB攻防-通用漏洞_文件上传_黑白盒审计流程
目录 前置知识点 Finecms-CMS文件上传 编辑 Cuppa-Cms文件上传 Metinfo-CMS 文件上传 前置知识点 思路: 黑盒就是寻找一切存在文件上传的功能应用 1 、个人用户中心是否存在文件上传功能 2 、后台管理系统是否存在文件上传功能 3 、字典目录扫描探针文件上传构…...
RabbitMQ基本介绍及简单上手
(一)什么是MQ MQ(message queue)本质上是队列,满足先入先出,只不过队列中存放的内容是消息而已,那什么是消息呢? 消息可以是字符串,json也可以是一些复杂对象 我们应用场…...
服务器证书不受信任是什么问题?
用户在访问某些网站时,可能会遇到“服务器证书不受信任”的警告。这一问题不仅影响用户的浏览体验,更可能对网站的信誉和安全性产生深远影响。那么服务器证书不受信任是什么问题呢? 服务器证书的基本概念 服务器证书是由证书颁发机构(CA)签…...
spring mvc源码学习笔记之十
前面的文章介绍了用 WebApplicationInitializer 或者 AbstractAnnotationConfigDispatcherServletInitializer 来代替 web.xml 。 我们学 java web 的时候就知道,servlet 容器会自动加载 web.xml。 那么,疑问就来了,WebApplicationInitialize…...
Ubuntu 下载安装 elasticsearch7.17.9
参考 https://blog.csdn.net/qq_26039331/article/details/115024218 https://blog.csdn.net/mengo1234/article/details/104989382 过程 来到 Es 的版本发布列表页面:https://www.elastic.co/downloads/past-releases#elasticsearch 根据自己的系统以及要安装的…...
OpenClaw多模态创作助手:千问3.5-35B-A3B-FP8生成技术文章与配图
OpenClaw多模态创作助手:千问3.5-35B-A3B-FP8生成技术文章与配图 1. 为什么需要自动化技术博客创作 作为一个经常写技术博客的开发者,我发现自己总在重复同样的劳动:查资料、写初稿、找配图、调格式。每次想分享一个新技术的使用心得&#…...
投资于人如何落地?红海云数字化重构国有企业人才价值链
2025年底,中央经济工作会议以“五个必须”概括了新形势下经济工作的规律性认识。其中,“必须坚持投资于物和投资于人紧密结合”这一论断,首次将“投资于人”提升到与“投资于物”同等重要的战略高度。这不仅是对传统增长模式的深刻反思&#…...
启程代码学习之旅
文章目录一.自我介绍二.编程目标三.怎么样学习编程四.每周花费多少时间学习编程五.我最想进入的IT公司总结一.自我介绍 本人是一个二本院校大一的学生,专业是机械专业,智能制造工程,因为大二要学单片机51和stm32,所以开始跟老师学…...
intv_ai_mk11惊艳效果:同一提示词下不同温度值生成结果的语义与风格对比
intv_ai_mk11惊艳效果:同一提示词下不同温度值生成结果的语义与风格对比 1. 模型效果展示概述 intv_ai_mk11作为基于Llama架构的文本生成模型,其温度参数(temperature)对生成结果的多样性和创造性有着显著影响。温度值控制着模型在生成文本时的随机性程…...
用CS5090E芯片给两节锂电池充电,实测效率90%的完整方案(附立创EDA原理图)
基于CS5090E的双节锂电池高效充电方案实战解析 两节锂电池串联充电在便携式设备中越来越常见,但如何实现高效、安全的充电却是个技术活。最近我在一个开源硬件项目中遇到了这个问题,经过反复测试验证,最终采用CS5090E芯片设计了一套充电效率实…...
2025届学术党必备的六大降重复率助手推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 提高人工智能生成内容即AIGC的检测难度,关键之处在于增强文本的自然特性与个性化…...
菜鸟的逆向工程学习之路——逆向工程基本介绍
菜鸟的逆向工程学习之路——逆向工程基本介绍 菜鸟的逆向工程学习之路——逆向工程基本介绍 逆向工程是一种分析目标系统的过程,旨在识别系统的各组件以及组件间关系,以便能够通过其他形式或在较高的抽象层次上,重建系统的表征。 逆向工程一直…...
2026届毕业生推荐的AI写作方案横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 专为削弱或消除文本里人工智能产成的具探测性特征而设的降AIGC工具,能使输出更贴…...
智能配置助手:让快马ai帮你解决wsl安装openclaw中的依赖与网络难题
最近在WSL环境下折腾OpenClaw的安装,遇到了不少坑。作为一个AI工具库,OpenClaw本身功能强大,但安装过程却意外地坎坷——网络限制、版本冲突、依赖缺失,这些问题一个个冒出来,差点让我放弃。好在发现了InsCode(快马)平…...
3分钟搞定!B站视频下载神器让你轻松保存大会员4K高清视频 [特殊字符]
3分钟搞定!B站视频下载神器让你轻松保存大会员4K高清视频 🚀 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还…...
