C++ 类和对象-封装的意义

前沿

C++面向对象的三大特性为:封装、继承、多态。
封装的意义:

  1. 将属性和行为作为一个整体,表现生活中的事物
  2. 将属性和行为加以权限控制

封装意义一:

在设计类的时候,属性和行为写在一起,表现事物。
语法: class 类名 { 访问权限 : 属性 / 行为 } ;

示例1:设计一个圆类,求圆的周长


#include <iostream>const double PI = 3.14;
class Circle  // class 类名
{// 访问权限// 公共权限
public: // 表明 属性和行为 不管是在类内还是类外都可以被访问// 属性// 半径int m_r;// 行为(函数)// 获取圆的周长double calculate(){return 2 * PI * m_r;}
};
int main()
{using namespace std;// 通过圆类,创建具体的圆 c1(对象)// 实例化 (通过一个类  创建一个对象的过程)Circle c1;// 给圆对象 的属性进行赋值 c1.m_r = 10;cout << "圆的周长为: " << c1.calculate() << endl;system("pause");return 0;}

示例2: 设计学生类,属性: 姓名 , 学号; 行为: 显示姓名、 学号。

#include <iostream>
#include <string>
using namespace std;
class Student
{// 权限
public:// 属性string name;string id;// 行为 (显示属性)void print_student() {cout << "学生的名字: " << name << endl;cout << "学生的学号: " << id << endl;}
};int main()
{string name, id;cin >> name;cin >> id;Student student;student.name = name;student.id = id;student.print_student();return 0;
}

这是通过初始化给属性进行赋值。

也可以通过 行为 对属性进行赋值。
class Student中定义 行为

	void setName(string s_name){name = s_name;}

main() 函数中使用

	student.setName("张三");

类中的属性和行为 称为 成员
属性 也称为 成员属性成员变量
行为 也称为 成员函数成员方法

封装的意义二

类在设计时,可以把属性和行为放在不同的权限下,加以控制。

访问权限有三种:

  1. public 公共权限
  2. protected 保护权限
  3. private 私有权限
#include <iostream>
using namespace std;
// 访问权限
// 公共权限 public  成员 类内可以访问, 类外也可以访问
// 保护权限 protected 成员 类内可以访问 类外不可以访问
// 私有权限 private   成员 类内可以访问 类外不可以访问
/*
继承: 父类中的保护权限,子类也可以访问父类中的保护成员父类中的私有权限,子类不可以访问父类中的私有成员
*/
class Person
{
public:// 公共权限 string m_Name; // 姓名
protected:// 保护权限string m_Car; // 汽车
private:// 私有权限int m_Password; // 银行卡密码
public:void func(){m_Name = "张三";m_Car = "拖拉机";m_Password = 123456;}
};
int main()
{Person p1;p1.m_Name = "李四";//p1.m_Car = "奔驰"; // 保护权限内容不能访问//p1.m_Password = 123; // 私有权限不可以访问return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/185891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 生成器的作用

1. 生成器 参考&#xff1a; https://www.cainiaojc.com/python/python-generator.html 1.1. 什么是生成器&#xff1f; 在 python 中&#xff0c;一边循环一边计算的机制&#xff0c;称为生成器&#xff1a;generator. 1.2. 生成器有什么优点&#xff1f; 1、节约内存。p…

PC端企业微信hook协议开发,获取要群发的客户群id

产品说明 一、 hook版本&#xff1a;企业微信hook接口是指将企业微信的功能封装成dll&#xff0c;并提供简易的接口给程序调用。通过hook技术&#xff0c;可以在不修改企业微信客户端源代码的情况下&#xff0c;实现对企业微信客户端的功能进行扩展和定制化。企业微信hook接口…

【模电】基本共射放大电路的组成及各元件的作用

基本共射放大电路的组成及各元件的作用 下图所示为基本共射放大电路&#xff0c;晶体管是起放大作用的核心元件。输入信号 U ˙ i \.{U}\tiny i U˙i为正弦波电压。 当 u i 0 {u\tiny i}0 ui0时&#xff0c;称放大电路处于静态。在输入回路中&#xff0c;基极电源 V B B V\tin…

Re8 Generative Modeling by Estimating Gradients of the Data Distribution

宋扬博士的作品&#xff0c;和DDPM同属扩散模型开创工作&#xff0c;但二者的技术路线不同 Introduction 当前生成模型主要分成两类 基于似然模型 通过近似最大似然直接学习分布的概率密度&#xff0c;如VAE 隐式生成模型 概率分布由其抽样过程的模型隐式表示&#xff0c…

vue3+ts 实现时间间隔选择器

需求背景解决效果视频效果balancedTimeElement.vue 需求背景 实现一个分片的时间间隔选择器&#xff0c;需要把显示时间段显示成图表&#xff0c;涉及一下集中数据转换 [“02:30-05:30”,“07:30-10:30”,“14:30-17:30”]‘[(2,5),(7,10),(14,17)]’[4, 5, 6, 7, 8, 9, 10, …

掌握Python BentoML:构建、部署和管理机器学习模型

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com BentoML是一个开源的Python框架&#xff0c;旨在简化机器学习模型的打包、部署和管理。本文将深入介绍BentoML的功能和用法&#xff0c;提供详细的示例代码和解释&#xff0c;帮助你更好地理解和应用这个强大的工…

volatile-之小总结

凭什么我们Java写了一个volatile关键字&#xff0c;系统底层加入内存屏障&#xff1f;两者的关系如何勾搭&#xff1f; 内存屏障是什么&#xff1f; 是一种屏障指令&#xff0c;它使得CPU或编译器对屏障指令的前和后所发出的内存操作执行一个排序的约 束。也称为内存栅栏或栅…

低价商品采购API接口

采购商品地址http://sly.yizhaosulianyun.com/More/Push/888889?type3 低价商品采购API接口 1) 请求地址 http://sly.yizhaosulianyun.com/jd/keyWords 2) 调用方式&#xff1a;HTTP post 3) 接口描述&#xff1a; 低价商品采购接口 4) 请求参数: POST参数: 字段名称字段…

如何实现大数据渲染

在前端实现大数据渲染时&#xff0c;常见的优化方式是使用虚拟滚动&#xff08;Virtual Scrolling&#xff09;或无限滚动&#xff08;Infinite Scrolling&#xff09;技术。这些技术可以帮助降低内存消耗和提高渲染性能&#xff0c;以下是一些常用的实现方法&#xff1a; 虚拟…

获取MATLAB默认配色方案

color_map get(gca, ColorOrder)转化为 十六进制 程序参考链接 % 输入&#xff1a;1x3 行向量&#xff0c;例如 [0 113.9850 188.9550] % 输出&#xff1a;字符串&#xff0c;例如 #1183CE function HEXRGB2HEX(RGB)% RGB2HEX : 实现颜色RGB值转化haex% 输入RGB三个数的数…

《Python机器学习原理与算法实现》学习笔记--一文掌握机器学习与Python的基础概念

机器学习常见的基础概念 根据输入数据是否具有“响应变量”信息&#xff0c;机器学习被分为“监督式学习”和“非监督式学习”。“监督式学习”即输入数据中即有X变量&#xff0c;也有y变量&#xff0c;特色在于使用“特征&#xff08;X变量&#xff09;”来预测“响应变量&am…

深度学习:什么是知识蒸馏

1 概况 1.1 定义 知识蒸馏&#xff08;Knowledge Distillation&#xff09;是一种深度学习技术&#xff0c;旨在将一个复杂模型&#xff08;通常称为“教师模型”&#xff09;的知识转移到一个更简单、更小的模型&#xff08;称为“学生模型”&#xff09;中。这一技术由Hint…

会泽一村民上山放羊吸烟引发森林火灾,AI科技急需关注

2023年4月&#xff0c;会泽县古城街道厂沟村委会望香台山林中发生了一场由疏忽引发的森林火灾。张某某在放羊时未完全熄灭烟头&#xff0c;导致7.33公顷的林地和草地被焚毁&#xff0c;直接经济损失高达29.097万元。这一事件再次凸显了日常生活中的安全隐患。 在这一背景下&…

GeoServer改造Springboot源码四(图层管理设计)

一、界面设计 图 1图层管理列表 图 2选择图层数据源 图 3添加图层 图 4编辑图层

Fortinet 发布《2024 年网络威胁趋势预测报告》 攻击精准性、复杂性将显著提升

近日&#xff0c;全球网络安全领导者Fortinet&#xff08;Nasdaq&#xff1a;FTNT&#xff09;发布《2024 年网络威胁趋势预测报告》。该报告由Fortinet全球威胁情报和研究团队&#xff08;FortiGuard Labs&#xff09;制作&#xff0c;深入探讨了高级持续性网络犯罪的新时代&a…

如何决定产品功能的优先顺序:从 Scrum 过渡到 Shape Up

领导者应该决定要解决的问题的“内容”和“时间”&#xff08;而不是要实施的解决方案&#xff09;。产品团队成员应该可以自由地通过他们只能根据自己的专业知识和知识构思和执行的解决方案来定义“如何”。本文将指导我们从 Scrum 转向Shape Up&#xff0c;立即开始按时交货&…

芯片技术探索:了解构芯片的设计与制造之旅

芯片技术探索:了解构芯片的设计与制造之旅 一、引言 随着现代科技的飞速发展,芯片作为信息技术的核心,已经渗透到我们生活的方方面面。从智能手机、电视、汽车到医疗设备和工业控制系统,芯片在各个领域都发挥着至关重要的作用。然而,对于大多数人来说,芯片仍然是一个神秘…

11.30

1.设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace std;cl…

从setText处理来学习绘制流程

Android中TextView调用setText是会进行text文字的更新&#xff0c;是一个比较简单的画面变化&#xff0c;这可以作为一个出发点来查看绘制处理流程。这里来问问chatGPT&#xff0c;来查看大致流程 请讲讲Android中textView的setText处理流程 ChatGPT Poe 当你调用 textView.s…

python获取网络时间,0延时

在我的一个python定时执行程序中&#xff0c;自定义了一个定时执行程序的功能&#xff0c;但是有很多服务器跟网络时间是不同的&#xff0c;或快或慢&#xff0c;那么如何用网络时间进行定时呐。 获取网络时间&#xff08;0延时&#xff09; python有很多获取网络时间方法&am…