news 2026/6/11 5:33:00

每日一个C++知识点|面向对象之封装

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
每日一个C++知识点|面向对象之封装

面向对象是C++编程语言的重要特征, 也是C++与C语言显著区别的重要标志, 那什么是面向对象呢?

什么是面向对象

这里的对象并不是指我们的男女朋友, 而是由"Object"所翻译, 指的是具体的物体, 与之相对应的是抽象的类,对象的关系就是物体的普遍性特殊性的关系, 即一般与个别的关系, 把类转换成对象的过程叫实例化

C++面向对象主要分成三个模块,分别是封装,继承多态

封装

封装就是把属性行为打包到里面, 其中属性就是指成员变量, 行为就是指成员函数, 并通过privatepublic来确定访问权限

其中private是常用的私有封装修饰符,类的成员变量几乎都用它修饰, 只能类内访问

public公有封装修饰符,一般用来修饰类的成员函数,可以允许外部访问

下面举一个关于封装的使用例子

classRectangle{// 私有属性:宽度、高度(外部无法直接访问)private:doublewidth;// 矩形宽度doubleheight;// 矩形高度// 公有接口:对外提供访问和操作的方法public://读取宽度doublegetWidth()const{returnwidth;}// 读取高度doublegetHeight()const{returnheight;}//计算面积doublecalculateArea()const{returnwidth*height;}//计算周长doublecalculatePerimeter()const{return2*(width+height);}};

上面代码描述的是一个名为Rectangle的类,其意思就是说这个类是矩形,这个矩形类里面包含成员变量widthheight,也叫属性,分别表示这个这个矩形的宽和高这两个属性, 除了成员变量外还包含成员函数getWidth(),getHeight(),calculateArea(),calculatePerimeter(),也叫成员方法,分别表示读取宽度,读取高度,计算面积,计算周长的方法

那么为什么要这么设计呢?为什么要分开privatepublic呢?这就体现出封装的魅力了。其中一个原因是保护数据的安全,不让外部直接访问这个类的属性而造成数据的篡改,只能通过公有的接口来间接访问属性数据,例如以上代码中是通过getHeight()这个公有的方法来获取width的数据的

实例化

以上是封装类的过程,面向对象除了类的封装外,还需要有对象的实例化, 什么是实例化呢,就是把抽象的类转变成具体的对象的过程,就是实例化

那么怎么把抽象的类转变成具体的对象呢?下面我们将以一段代码举例说明

首先我们先完善上面的矩形类的代码,对上述代码添加了修改属性的方法

#include<iostream>usingnamespacestd;classRectangle{// 私有属性:宽度、高度(外部无法直接访问)private:doublewidth;// 矩形宽度doubleheight;// 矩形高度// 公有接口:对外提供访问和操作的方法public://读取宽度(getter方法)doublegetWidth()const{returnwidth;}//读取高度(getter方法)doublegetHeight()const{returnheight;}// 修改宽度voidsetWidth(doublew){width=w;}//修改高度voidsetHeight(doubleh){height=h;}//计算面积doublecalculateArea()const{returnwidth*height;}//计算周长doublecalculatePerimeter()const{return2*(width+height);}};

然后我们对类进行实例化

intmain(){// 1. 实例化单个矩形对象(调用编译器默认的空构造函数)Rectangle rect;// 2. 为对象的私有属性赋值(宽4.0,高5.0,可自行修改数值)rect.setWidth(4.0);rect.setHeight(5.0);// 3. 调用方法,输出对象的相关信息cout<<"矩形的宽度:"<<rect.getWidth()<<endl;cout<<"矩形的高度:"<<rect.getHeight()<<endl;cout<<"矩形的面积:"<<rect.calculateArea()<<endl;cout<<"矩形的周长:"<<rect.calculatePerimeter()<<endl;return0;}

通过成员方法setWidth()setHeight给对象的widthheight属性赋值,然后通过getWidth()getHeight()读取其属性信息,通过calculateArea()calculatePerimeter()对属性数据进行运算,得出以下结果:

上面的过程就是类转化为对象的过程,也就是实例化

由于篇幅所限,本问主要简述的是C++面向对象的封装模块,后续将会继续简述继承多态的内容

总结

本文主要讲述了C++面向对象之封装的主要内容,重点简述了类和对象的主要关系,并通过代码示例来展示类实例化对象的过程~

如果文章对你有帮助的话,欢迎点赞和收藏哟~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 23:14:20

6、整数分解的量子算法:从经典到量子的探索之旅

整数分解的量子算法:从经典到量子的探索之旅 1. 引言 整数分解问题(IFP)在密码学领域具有举足轻重的地位,著名的RSA加密系统的安全性就建立在IFP的难解性之上。RSA的发明者也因这一贡献在2002年获得了图灵奖,该奖项被誉为计算机科学领域的诺贝尔奖。如果IFP能在多项式时…

作者头像 李华
网站建设 2026/6/10 13:04:14

13、量子计算:原理、算法与独特特性

量子计算:原理、算法与独特特性 1. 独特设置门 在量子计算中,单量子比特转换或受控非门可用于实现任何酉变换。为了便于处理,使用较小的门集合往往更好。虽然无法通过有限的门集合组合来执行所有酉变换,但可以证明,任何有限的门集合都能以任意精度近似任何酉转换。而且,…

作者头像 李华
网站建设 2026/6/10 20:40:33

Windows字体渲染终极优化:5种方案让系统文字更清晰

Windows字体渲染终极优化&#xff1a;5种方案让系统文字更清晰 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype 你是否曾在Windows电脑上阅读文档或浏览网页时&#xff0c;感觉字体边缘模糊、细节不…

作者头像 李华
网站建设 2026/6/10 19:18:15

ImageGlass 终极指南:免费开源的图像浏览神器

在数字时代&#xff0c;我们每天都会接触到大量的图像文件&#xff0c;从工作文档到个人照片&#xff0c;从设计素材到网络截图。面对如此多样的图像格式和浏览需求&#xff0c;传统图像查看器往往显得力不从心。ImageGlass 作为一款免费开源的图像查看器&#xff0c;以其轻量级…

作者头像 李华
网站建设 2026/6/9 19:59:36

终极指南:5步快速解决MetaTube插件FC2元数据刮削故障

终极指南&#xff1a;5步快速解决MetaTube插件FC2元数据刮削故障 【免费下载链接】jellyfin-plugin-metatube MetaTube Plugin for Jellyfin/Emby 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metatube MetaTube插件作为Jellyfin平台上专门为成人内容…

作者头像 李华
网站建设 2026/6/10 17:39:17

视频字幕提取革命:本地化智能工具让硬字幕无处可逃

你是否曾经遇到过这样的困扰&#xff1a;下载的海外影片没有字幕&#xff0c;只能硬着头皮看哑剧&#xff1b;想要记录视频中的精彩对白&#xff0c;却只能反复暂停手动抄写&#xff1b;担心隐私安全&#xff0c;不敢使用在线OCR服务上传视频&#xff1f;今天&#xff0c;我要向…

作者头像 李华