当前位置: 首页 > news >正文

C++中的封装性

定义:

封装性:

1.将属性(成员变量)和行为(成员函数)作为一个整体,表现在生活中的事物

2.将属性和行为加以权限控制

(将事物的属性(成员变量)和行为(成员函数)封装在一起形成一个类,并且设置相应的访问权限)

C++中如何实现封装:

将数据成员设为私有或保护类型,再提供公有成员函数访问和修改数据,以此隐藏内部实现细节

语法:

class+类名+{访问权限:属性/行为};

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

#include<iostream>
using namespace std;
class circle {
public://访问权限:共有的权限int r;double zhouchang() {return 2 * 3.14 * r;}
};
int main() {circle c1;//通过圆类,创造圆的对象,c1是一个具体的圆c1.r = 10;cout << "周长为:" << c1.zhouchang() << endl;return 0;
}

好处:

1.数据隐藏

将数据成员设为私有(private),可以防止外部代码直接访问和修改对象的内部数据,从而保证数据的完整性和安全性。

class A{
private:int length;int width;
public:A(int a, int b) : length(a), width(b) {//初始化参数列表}int fun() {return length * width;}
};

length 和 width 是 A 类的私有数据成员,外部代码不能直接访问它们。只能通过fun() 这样的公有成员函数来间接获取与这些数据相关的信息。

2.提高代码的可维护性

当需要对类的内部实现进行修改时,只要接口(公有成员函数)不变,外部代码不需要进行修改。

class Circle {
private:double radius;
public:Circle(double r) : radius(r) {}double getArea() {return 3.14159 * radius * radius;}
};

如果之后想要提高 getArea 函数计算圆面积的精度,例如使用更精确的 π 值,只需要修改 getArea 函数内部的实现,而使用 Circle 类的外部代码不需要进行任何改变。

3.便于代码的复用

封装好的类可以很方便地在不同的项目或代码部分中被复用。

class B {
private:int arr[100];int p;
public:B() : p(-1) {}void fun(int value) {arr[++p] = value;}int hhh() {return arr[p--];}
};

这个 B 类可以在任何需要栈数据结构的地方被复用,只要包含这个类的定义并按照其接口( push 和 fun 函数)来使用即可。

相关文章:

C++中的封装性

定义&#xff1a; 封装性&#xff1a; 1.将属性&#xff08;成员变量&#xff09;和行为&#xff08;成员函数&#xff09;作为一个整体&#xff0c;表现在生活中的事物 2.将属性和行为加以权限控制 &#xff08;将事物的属性&#xff08;成员变量&#xff09;和行为&#…...

PyTorch 深度学习框架简介:灵活、高效的 AI 开发工具

PyTorch 深度学习框架简介&#xff1a;灵活、高效的 AI 开发工具 PyTorch 作为一个深度学习框架&#xff0c;以其灵活性、可扩展性和高效性广受欢迎。无论是在研究领域进行创新实验&#xff0c;还是在工业界构建生产级的深度学习模型&#xff0c;PyTorch 都能提供所需的工具和…...

leetcode-22.括号生成

暴力 感谢分享这个思路和算法。生成括号的问题可以通过生成所有可能的括号序列并验证其有效性来解决。以下是对该思路的详细解释和实现&#xff1a; 思路 生成所有可能的序列&#xff1a; 使用递归生成所有长度为 2n 的括号序列。在每个位置可以选择放置 ( 或 )。 验证序列的…...

devops-Dockerfile+Jenkinsfile方式部署Java前后端应用

文章目录 概述部署前端Vue应用一、环境准备1、Dockerfile2、.dockerignore3、nginx.conf4、Jenkinsfile 二、Jenkins部署1、新建任务2、流水线3、Build Now 构建 & 访问 Springboot后端应用1. 准备工作2. 创建项目结构3. 编写 Dockerfile后端 Dockerfile (backend/Dockerfi…...

【Apache Paimon】-- 4 -- Flink 消费 kafka 数据,然后写入 paimon

目录 1、本地开发环境 2、kafka2paimon 实现流程 3、代码实现 3.1、项目名称 3.2、项目结构 3.3、Pom.xml 和 log4j.properties 文件 3.4、代码核心类 3.4.1、入口类:Kafka2PaimonDemo.java 3.4.2、参数解析类 3.4.2.1、JobParameterUtil.java( flink job schedule…...

【成功解决】:VS2019(Visual Studio 2019)遇到E2870问题:此配置中不支持 128 位浮点类型

起因:项目中需要用json来操作数据,就引了cJSON库(cJSON.h和cJSON.c文件),但是发现编译报错如下 E2870 此配置中不支持 128 位浮点类型 test0 ...\usr\include\x86_64-linux-gnu\bits\floatn.h 75 然后先新建了个工程来检查问题(甚至在这之前还以为是cjson…...

什么是TCP的三次握手?

TCP的三次握手&#xff1a;深入理解建立可靠连接的过程 引言 在计算机网络中&#xff0c;传输控制协议&#xff08;TCP&#xff09;是确保数据可靠传输的核心协议之一。TCP通过三次握手机制来建立一个稳定的、双向的连接&#xff0c;这对于确保数据的完整性和顺序至关重要。本…...

SQL教程(2):SQL基础语法及用途

在上一篇文章中&#xff0c;我们介绍了 SQL&#xff08;结构化查询语言&#xff09;的基本概念&#xff0c;以及它在用户研究中的重要作用。今天&#xff0c;我们将深入了解 SQL 的基本语法&#xff0c;并通过实际应用场景帮助你更好地理解如何使用 SQL 提取和分析数据。对于刚…...

在Ubuntu22.04 jammy下用qemu模型riscv32环境装鸿蒙(待续)

在使用实体ESP32C3 安装鸿蒙失败后&#xff0c;就是这个&#xff1a;完全按照手册win10里装Ubuntu 虚拟机然后编译ESP32&#xff08;主要是想针对ESP32C3和S3&#xff09;开发板的鸿蒙系统(失败)-CSDN博客转向用qemu模拟环境装鸿蒙 学习手册riscv32_virt/README_zh.md OpenHar…...

C++:基本-union是没有构造函数和析构函数的

今天发现当我在union中包含了多个结构体时&#xff0c;结构体有默认构造函数时&#xff0c;编译报错。 问题点&#xff1a; union不支持构造函数和析构函数union中的元素本身也是不支持构造函数和析构函数的。包含union的结构体也不支持构造函数和析构函数。 出错代码如下&a…...

报错 JSON.parse: expected property name or ‘}‘,JSON数据中对象的key值不为字符串

报错 JSON.parse: expected property name or ‘}’ 原因 多是因为数据转换时出错&#xff0c;可能是存在单引号或者对象key值不为string导致 这里记录下我遇见的问题&#xff08;后端给的JSON数据里&#xff0c;对象key值不为string&#xff09; 现在后端转换JSON数据大多…...

LeetCode 热题 100_旋转图像(20_48_中等_C++)(原地旋转;翻转)

LeetCode 热题 100_旋转图像&#xff08;20_48&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;原地旋转&#xff09;&#xff1a;思路二&#xff08;翻转&#xff09;&#xff1a; 代码实现&#xff08;思路…...

mysql查询所有用户及删除用户

查询用户 select user, host, password_expired from mysql.user;删除用户 DROP USER [username]localhost &#xff1b;刷新权限 FLUSH PRIVILEGES&#xff1b;查询所有用户/账号设置/日志/开启日志 select user,host,password_expired,password_last_changed,password_li…...

Vue 鼠标滚轮缩放图片的实现

wheel"handleZoom" 监听鼠标滚轮事件 event.deltaY < 0 代表向上滚动 event.deltaY > 0 代表向下滚动 使用computed处理scale比例的变化 const imageStyle computed(() > ({ transform: translate(-50%, -50%…...

全景图 与 6面图转换

目录 全景图转6面图&#xff1a; 6面图转全景图 全景图转6面图&#xff1a; https://github.com/springcheese/panoramic_to_cubemap_generation # Necessary Imports import math import argparse import numpy as np from PIL import Image# Dictionary for CUBEMAP FACES…...

深入浅出:PHP 文件操作

文章目录 引言文件的基本操作打开文件读取文件逐行读取读取整个文件 写入文件追加写入覆盖写入 关闭文件 文件和目录的管理检查文件或目录是否存在创建和删除文件创建和删除目录复制和移动文件 处理文件权限设置文件权限获取文件权限 处理文件属性获取文件大小获取文件最后修改…...

116. UE5 GAS RPG 实现击杀掉落战利品功能

这一篇&#xff0c;我们实现敌人被击败后&#xff0c;掉落战利品的功能。首先&#xff0c;我们将创建一个新的结构体&#xff0c;用于定义掉落体的内容&#xff0c;方便我们设置掉落物。然后&#xff0c;我们实现敌人死亡时的掉落函数&#xff0c;并在蓝图里实现对应的逻辑&…...

【批处理脚本】更改Windows系统中的 hosts 解析文件

概述 作用 修改 Windows 系统中的 hosts 文件&#xff0c;可以实现 插入 或 删除 条目。该脚本允许用户以管理员权限执行&#xff0c;将特定的域名解析到指定的 IP 地址 应用场景 非常适用于需要频繁或批量修改 hosts 文件的场景&#xff1a; 屏蔽网站、域名重定向、DNS 污染防…...

fastDFS

docker 部署fastDFS docker pull delron/fastdfs docker-compose.yml version: 3services:fastdfs_tracker:image: delron/fastdfs:latestcontainer_name: trackerhostname: trackernetwork_mode: hostports:- "22122:22122"volumes:- ./data/tracker:/var/fdfsco…...

【Linux】存储

声明&#xff1a;以下内容均来学习自《Linux就该这么学》一书 Linux系统中的一切文件都是从“根(/)”目录开始的&#xff0c;并按照文件系统层次化标准&#xff08;FHS&#xff09;采用树形结构来存放文件&#xff0c;以及定义了常见目录的用途。此外&#xff0c;Linux系统中的…...

告别无效熬夜!10 款 AI 毕业论文工具实测,解锁高效通关路径

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 打开 Word 文档盯着空白页面发呆&#xff0c;开题报告改了五版还是被导师打回&#xff0c;文献综述翻遍知网也理不…...

Kimi推出超实用插件!让AI真正像你一样操作浏览器

月之暗面&#xff08;Moonshot AI&#xff09;正式推出了一款名为 Kimi WebBridge 的浏览器扩展插件。这款产品的核心理念是让AI Agent像你本人一样操作浏览器。它带着你的登录状态、你的Cookie、你的账号&#xff0c;去点击、滑动、输入&#xff0c;填写表单、提取信息、跨站点…...

YetiForceCRM社区与支持:如何获得帮助并参与开源贡献

YetiForceCRM社区与支持&#xff1a;如何获得帮助并参与开源贡献 【免费下载链接】YetiForceCRM Weve moved! For more information, visit https://github.com/YetiForceCompany/YetiForce 项目地址: https://gitcode.com/gh_mirrors/ye/YetiForceCRM YetiForceCRM是一…...

OBS多平台直播终极指南:一键同时推流到多个平台的完整教程

OBS多平台直播终极指南&#xff1a;一键同时推流到多个平台的完整教程 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾经想过&#xff0c;为什么每次直播都要为不同的平台单独配…...

金属3D打印光束整形:两大路线正面PK

作为金属3D打印技术的最新发展&#xff0c;开展光束整形技术研究的企业越来越多&#xff0c;研发的进程也越来越深。3D打印技术参考注意到&#xff0c;国外由EOS引领该技术发展&#xff0c;同时还有Aconity3D和DMG Mori等行业领导者&#xff1b;在国内&#xff0c;铂力特、华曙…...

深度工程判断力 × Claude Code:老法师怎么用全链路 AI 原生开发把 5 人 2 个月的交付,1 个人 30 天做完

去年&#xff0c;如果一家公司说&#xff1a;“我们 80% 的代码是 AI 写的。” 你大概会点点头&#xff0c;心里想&#xff1a;行&#xff0c;PPT 先收一下&#xff0c;投资人已经在路上了。 但今天再听到这句话&#xff0c;反应变了&#xff1a;才 80%&#xff1f;为什么还有 …...

Perplexity名言警句搜索深度解析(2024年Q2最新API行为逆向实测报告)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity名言警句搜索深度解析&#xff08;2024年Q2最新API行为逆向实测报告&#xff09; Perplexity 在 2024 年第二季度对 /search 端点实施了细粒度的请求签名验证与上下文指纹绑定机制&#xff0…...

RK3588+ZYNQ+ROS2 机器人 “强实时控制 + AI 感知 + 边缘计算” 三位一体核心控制器

一、方案总览&#xff1a;为什么是 RK3588ZYNQ7045&#xff08;国产替代用复旦微 FMQL45T900&#xff09;RK3588&#xff08;8nm&#xff0c;瑞芯微&#xff09;&#xff1a;主 AI 业务中枢&#xff0c;6TOPS NPU、8 核 CPU&#xff08;4A764A55&#xff09;、8K 编解码、丰富…...

从Quill光标到用户头像:手把手教你为Yjs协同编辑器添加完整的在线用户列表(附状态同步技巧)

从Quill光标到用户头像&#xff1a;构建企业级协同编辑器的完整用户感知系统 在数字化办公场景中&#xff0c;协同编辑器的用户体验往往决定了团队协作效率的上限。当多个用户同时编辑同一份文档时&#xff0c;简单的光标显示已无法满足现代团队对协作透明度的需求。本文将深入…...

告别手写!用Playwright Codegen录制脚本,5分钟搞定百度搜索自动化

零代码神器&#xff1a;Playwright Codegen 5分钟实现百度搜索全流程自动化 每次手动测试网页功能时&#xff0c;你是否也厌倦了重复点击、输入、验证的机械操作&#xff1f;对于没有编程背景的测试人员或刚接触自动化的开发者来说&#xff0c;Playwright Codegen就像一位隐形的…...