Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【C++】类的封装 ① ( 类和对象 | 面向对象三大特征 - 封装 继承 多态 | 类的封装引入 )

【C++】类的封装 ① ( 类和对象 | 面向对象三大特征 - 封装 继承 多态 | 类的封装引入 )

作者头像
韩曙亮
发布于 2023-10-15 08:52:04
发布于 2023-10-15 08:52:04
22200
代码可运行
举报
运行总次数:0
代码可运行

一、类和对象

1、类和对象概念

" 面向对象编程 " 是一种 " 编程范式 " , 可以适用于所有的 高级语言 , C++ 也包括在内 ;

面向对象编程 基于 " 对象 " 的概念 , 在 对象 中 可以 封装 数据 ( 成员变量 ) 和 操作 ( 成员方法 ) ;

面向对象编程 提供了 对 外界事物 更好的 抽象 和 模块化 , 使代码更易于理解 ;

下面介绍 面向对象 的 两个重要概念 类 和 对象 ;

  • " 类 " 描述了 对象 的 数据 ( 成员变量 ) 和 操作 ( 成员函数 ) , 是 定义对象 的 蓝图 ;
  • " 对象 " 是根据 类 创建的 实例 , 是 类 的具体表示 , 每个 对象 都有其自己的 成员变量 和 成员函数 ;

2、代码示例 - 定义类和对象

定义类 : 创建 MyClass 类 , 其中定义了 myVariable 成员变量 和 myFunction 成员方法 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyClass {  
public:  
    int myVariable;  // 成员变量  
  
    void myFunction() {  // 成员函数  
        // 函数体  
    }  
};

定义上述类的对象 : 定义了 上述 MyClass 类的 实例对象 myObject ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyClass myObject;  // 创建一个 MyClass 类型的对象

二、类的封装

1、面向对象三大特征

面向对象三大特征 :

  • 封装 Encapsulation : 将 数据 和 操作 封装在类中 , 可以将 类 内部的 实现细节 隐藏 , 只暴露有限的 接口 与外部进行交互 , 从而达到保护 类 对象的 内部状态 不被外部随意修改 ;
  • 继承 Inheritance : 创建一个新的 子类 , 继承现有 父类 的 属性和方法 , 子类可以添加新的属性和方法以实现更强大的功能 , 还可以重写父类中的方法以实现不同的行为 ; 通过继承,可以构建一个 分层的 类层次结构 , 从而促进代码的重用和扩展 ;
  • 多态 Polymorphism : 一个接口 或 父类引用可以指向多种实际类型 ;

面向对象的三大特征 封装 Encapsulation / 继承 Inheritance / 多态 Polymorphism 共同构成了面向对象编程的基本原则 , 为代码的 可读性 / 可维护性 / 可扩展性 提供支持 ;

2、类的封装引入

封装 Encapsulation : 将 数据 和 操作 封装在类中 , 可以将 类 内部的 实现细节 隐藏 , 只暴露有限的 接口 与外部进行交互 , 从而达到保护 类 对象的 内部状态 不被外部随意修改 ;

将 现实世界 中 存在的 客观事物 封装成 抽象 的 类 , 类 中 包含了 数据 和 操作 ,

  • 只有 可信的 类 或 对象 才能访问 隐藏起来的信息 ;
  • 大部分类默认只能访问 类 公开的接口 ;

C++ 类 中 , 通过 " 访问控制修饰符 " 定义 类 成员变量 和 成员方法 的 访问级别 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
这些项目,入选了 2019 年最佳开源软件榜单!
InfoWorld 是致力于引领 IT 决策者走在科技前沿的国际科技媒体品牌,每年 InfoWorld 都会根据软件对开源界的贡献,以及在业界的影响力评选出当年的 “最佳开源软件”(2019 InfoWorld Bossie Awards,Best of Open Source Software awards),该奖项评选已经延续了十多年。
GitHubDaily
2019/11/22
1.3K0
这些项目,入选了 2019 年最佳开源软件榜单!
机器学习需要掌握的九种工具!
学术界在推进技术方面发挥了巨大作用,但学术界和工业界往往存在一种分割状态。我们经常会看到这种现象:无数很棒的辅助工具在学术界被忽视,但在工业界很受欢迎。对于很多研究者来说,学习一种新工具可能存在困难,不愿意花费过多的时间去尝试,在当前自己掌握的工具足以应对各种问题时尤其如此。
郭好奇同学
2022/02/25
1.5K0
机器学习需要掌握的九种工具!
代替Git进行机器学习实验管理的工具推荐
机器学习从业者通常通过实验算法、数据和超参数来开发新的机器学习模型。随着实验和项目规模的不断扩大,特别是在大中型企业中,越来越多的模型需要进行有效管理,上图展示了在谷歌中人工智能相关的存储库正在呈指数级增长。机器学习从业者需要一种高效的方法来存储、检索和利用模型版本、超参数和性能指标等细节。
核桃量化
2023/01/18
1.2K0
代替Git进行机器学习实验管理的工具推荐
可定制算法和环境,这个开源强化学习框架火了
机器之心报道 机器之心编辑部 强化学习框架怎么选?不如自己定制一个。 强化学习(reinforcement learning,RL)是近年来最受关注的人工智能研究方向之一,在机器人、游戏等领域应用甚广。现有的强化学习框架往往无法支持高效、定制化的训练场景的问题。 近日,GitHub 上一个名为 JORLDY 的开源、可定制强化学习(RL)框架引发关注。 项目地址:https://github.com/kakaoenterprise/JORLDY JORLDY 的主要优点是提供多种分布式强化学习算法,并且
机器之心
2023/03/29
8850
可定制算法和环境,这个开源强化学习框架火了
新泽西理工学院数据科学系、计算机系王丽晶老师招收多名博士
哈喽,我叫王丽晶,现任新泽西理工学院数据科学系终身轨助理教授。我在弗吉尼亚大学获得计算机博士学位,此后一年任职于哈佛医学院与波士顿儿童医院计算健康信息学项目 (CHIP) 博士后研 员。在此之前,我在中科院计算所获得计算机硕士学位,在大连理工大学软件工程学院获得学士学位。 我对人工智能、机器学习、深度学习、自然语言处理、时间序列分析和网络科学有着广泛的兴趣,重点是解决社会问题。我的博士论文研究的重点是结合基于理论的机械模型和深度神经网络进行流行病预测。更具体地说,我的研究侧重于深度学习的方法,这些方法结合了
AI科技评论
2023/04/12
3600
新泽西理工学院数据科学系、计算机系王丽晶老师招收多名博士
清华电子工程系系主任汪玉当选IEEE Fellow:因领域专用加速器设计贡献
机器之心报道 编辑:张倩 他是清华电子系首位 80 后系主任,谷歌学术引用过万。 每年年底,美国电子电气工程师学会(Institute of Electrical and Electronic Engineers,IEEE)都会公布新一年学会最高等级会员——IEEE Fellow 的当选名单。这是 IEEE 授予成员的最高荣誉,在学术科技界被认定为权威的荣誉和重要的职业成就。当选人需要对工程科学与技术的进步或应用做出重大贡献,为社会带来重大价值。当选人数不超过 IEEE 当年会员总数的 0.1%。去年,清
机器之心
2023/03/29
1.3K0
清华电子工程系系主任汪玉当选IEEE Fellow:因领域专用加速器设计贡献
计算机视觉导览:如何快速上手,是否该读博?
【新智元导读】 Learning OpenCV 3 Application Development 一书的作者 Samyak Datta 在一次专访中解答了初学者对计算机视觉领域的一系列疑问,他的阐释在一定程度上勾勒了整个领域的鸟瞰图。 计算机视觉、机器学习和神经网络成为了计算机科学领域最受瞩目、研究最多的课题。我们很幸运地与Samyak Datta 进行了交流,他是“Learning OpenCV 3 Application Development”一书的作者。Samyak 今年秋天将进入佐治亚理工学校的
新智元
2018/03/22
1.1K0
一站式机器学习开业平台 MLflow 怎么样?
机器学习(ML)通常需要使用广泛的数据集、数据预处理步骤和算法逻辑进行实验,以构建最优指标的模型。模型构建成功后,还需要将其部署到生产系统,监控其效果和性能,并根据新数据不断对其进行重新训练和迭代模型工作,如下:1
程序员荒生
2022/04/02
2.3K0
一站式机器学习开业平台 MLflow 怎么样?
AI开发人员选择NVIDIA TAO工具的5大理由
NVIDIA TAO(训练、适应和优化)是一个可以简化和加速企业 AI 应用和服务创建的 AI 模型自适应平台。通过基于用户界面的指导性工作流程,让用户可以使用自定义数据对预训练模型进行微调,无需掌握大量训练运行和深度 AI 专业知识,在数小时内(原本需要数月)产生高度精确的计算机视觉、语音和语言理解模型。
GPUS Lady
2021/10/13
1.1K0
万字长文:读博之前,我希望有人告诉过我这些(计算机/NLP/机器学习方向)
又是一年申请季。 “要不要继续学术?”你可能纠结过、困惑过。你也许曾坚定地希望推动世界的进步,但你准备好付出五年甚至更久的青春了吗? 本文是两个自然语言处理/机器学习方向的学者给出的“博士生存指南”,关于如何做好科研、自我管理和规划职业。这些原则不仅针对计算机领域,对其他方向的学习者也适用。花点时间读完,相信你一定会有所收获。 无论读博与否,你都需要“Do what makes you happy”。 作者:Mark Dredze, Hanna M. Wallach 编译:Mirra, 刘晓莉, Sophi
大数据文摘
2018/05/24
1.5K0
历史首次!华人博士获IEEE THMS 汇刊最佳期刊论文奖
机器之心专栏 机器之心编辑部 齐雯博士和苏航博士获得 IEEE Transactions on Human-Machine Systems 的 Andrew P. Sage 最佳论文奖。 2021 年 IEEE 系统、人与控制论学会(IEEE SMC)旗下的 IEEE Transactions on Human-Machine Systems 期刊 Andrew P. Sage 最佳论文奖 (Best Transactions Paper Award) 公布,意大利米兰理工大学电子、信息和生物工程学院齐雯
机器之心
2023/03/29
8860
历史首次!华人博士获IEEE THMS 汇刊最佳期刊论文奖
高级API、异构图:谷歌发布TF-GNN,在TensorFlow中创建图神经网络
机器之心报道 编辑:陈萍 高效且友好的 TensorFlow GNN 库。 今天,TensorFlow 官方博客发布了 TensorFlow Graph Neural Networks(TensorFlow GNN)库 ,这个库使得用户在使用 TensorFlow 时能够轻松处理图结构数据。 此前,TensorFlow GNN 的早期版本已经在谷歌的各种应用中使用,包括垃圾邮件和异常检测、流量估计、YouTube 内容标记等。特别是,考虑到谷歌数据种类繁多,该库在设计时就考虑到了异构图。 项目地址:ht
机器之心
2023/03/29
1K0
高级API、异构图:谷歌发布TF-GNN,在TensorFlow中创建图神经网络
从工具选择到团队沟通,看ML工程师一步步打造生产级机器学习
这些年,随着数据和计算技术的发展,「机器学习」和「深度学习」已经变成了热门研究领域。对公司来说,虽然使用机器学习很时髦,但首先还是需要评估一下自己的业务能否从中受益。如果你的公司已经认定机器学习对公司的下一步发展来说是必需的,那么作为机器学习工程师的你就该思考如何为生产环境构建机器学习过程了。希望本文能帮你明晰你需要考虑的一些东西。
机器之心
2020/02/24
6880
剑桥2020年AI全景报告出炉:54%中国NeurIPS作者流入美国
剑桥大学的 2020 版《AI 全景报告》写出了 AI 领域哪些值得关注的新观察?
数据派THU
2020/10/26
4720
剑桥2020年AI全景报告出炉:54%中国NeurIPS作者流入美国
抛弃MATLAB,一本书掌握Python强大的绘图库Matplotlib
机器之心报道 机器之心编辑部 Matplotlib 是一个非常强大的 Python 作图工具,也是很多高级可视化库的底层基础。 Python 科学可视化领域由无数的工具组成,从最通用和广泛使用的,到更专业和更机密的。其中一些工具源自社区,而另一些则是由企业开发的。有些是专门面向网页制作的,有些仅面向桌面端,有些面向 3D 和大型数据处理,还有一些面向 2D 渲染。 可视化是一个复杂的过程,研究者可以先问自己几个问题: 目标是桌面渲染还是网页渲染? 需要复杂的 3D 渲染吗? 对可视化的品质有什么要求吗?
机器之心
2023/03/29
4490
抛弃MATLAB,一本书掌握Python强大的绘图库Matplotlib
博士在读却连矩阵的秩都搞不清,我该如何毕业?|Reddit热议
Reddit上一位机器学习在读博士可是迷茫得不行,想知道没有学术天分的他该如何完成博士学位。
量子位
2021/07/19
6900
2021 GitHub年度报告:7300万开发者,最爱的依旧是Javascript
机器之心报道 编辑:蛋酱 全球最大的代码托管平台 GitHub,至今已聚集了超过 7300 万的开发者。 2020 年,新冠疫情突然到来,拉开了人与人之间的「地理距离」。与此同时,开发者们不得不开始学会适应远程工作,在家中尽量保持与办公室时同等的生产力水平,此外还要兼顾工作与生活的平衡。 从陌生到熟悉,从无所适从到得心应手……2021 年快结束了,人们已经从希望恢复往日时光的心态发展到真正习惯了工作流程的改变,意识到了远程工作的切实需求。全球最大的代码托管平台 GitHub 正是这一趋势转换的见证者。
机器之心
2023/03/29
2090
2021 GitHub年度报告:7300万开发者,最爱的依旧是Javascript
独家 | 数据科学家应该了解的5个 Python库(附链接)
作者:Artem Shelamanov 翻译:陈之炎校对:赵茹萱本文约2800字,建议阅读5分钟本文介绍了机器学习库,并掌握了模型架构之后,便可以训练模型解决现实问题。
数据派THU
2024/04/25
2970
独家 | 数据科学家应该了解的5个 Python库(附链接)
香港理工大学张晨博士招收计算机专业博士
导师简介 Dr. Chen ZHANG (张晨博士) 现任香港理工大学助理教授(计算机学系与酒店旅游管理学院联合聘用)。 在加入香港理工大学计算机学系前曾担任香港科技大学大数据研究所的高级经理,并曾于2015年获得香港科技大学计算机科学与工程博士学位。 他的主要研究方向包括数据整合,数据质量,时空数据算法等。 其相关研究工作多次发表在ICDE, VLDB, SIGMOD, AAAI, TKDE等世界一流会议或期刊。 主要研究方向:人工智能跨学科应用,时空数据挖掘, 数据优化算法。 个人主页:https://
AI科技评论
2023/05/12
9780
香港理工大学张晨博士招收计算机专业博士
什么是MLOps?为什么要使用MLOps进行机器学习实践
随着数字化和计算能力的发展,机器学习(Machine Learning)技术在提高企业生产力方面所涌现的潜力越来越被大家所重视,然而很多机器学习的模型及应用在实际的生产环境并未达到预期,大量的ML项目被证明是失败的。从机器学习的发展历程来看,早期ML社区广泛关注的是ML模型的构建,确保模型能在预定义的测试数据集上取得较好的表现,但对于如何让模型从实验室走向用户的桌面,并未大家所关注。
人工智能日报
2023/06/22
1.5K0
推荐阅读
相关推荐
这些项目,入选了 2019 年最佳开源软件榜单!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验