C++基本语言:1.5结构、pbulic、private权限修饰符、类简介

C++基本语言包含10章节内容,存于C++从入门到精通专栏

目录

一、结构回顾

①结构变量作为参数

②采用引用

③用指向结构体的指针做函数参数

问:C/C++的结构有何区别?

二、public和private权限修饰符

三、类简介:类也是一种用户自定义的数据类型

四、类组织:书写规范


一、结构回顾

结构:自定义的数据类型

6f95c464e38540bc94b20c917a233031.png

然后,我们添加这个函数

fd59625d01024645b183ef181af8bf31.png

①结构变量作为参数

我们发现,这个值没有被函数改变

b29fdb25e4a74774bb8b657738079c2c.png

func():效率低,(结构变量作为参数)因为实参传递给形参的时候,发生了内存内容的拷贝

②采用引用

采用引用的方法,由于他们两是一个地址;形参变成了结构变量的引用,不会发生内存的拷贝了;效率高

5428925393b24e30a7ee228227063c45.png

③用指向结构体的指针做函数参数

c5334d434971497884714cb5fade98bf.png

->指向运算符,效率也高

90bbb3ed2a274c14988e82832a1d88fd.png

问:C/C++的结构有何区别?

C++中的结构除了具备C中结构的所有功能外,还增加许多扩展功能,其中最突出的扩展功能之一就是C++的结构中不仅仅有成员变量,还可以在其中定义成员函数(方法)。

a1e6c193470b42d285ad416cd6ff796b.png

成员函数可以用“对象名.成员函数名(实参列表)”的格式来调用。

1a3ec4fcb53746029d19e95575d9cb48.png

二、public和private权限修饰符

在结构和类中,有三个重要的权限修饰符,分别是public(公有)、 private(私有)、protected(保护)。本节只谈public和private,而 protected后面讲解。

public:以及private:,定义的时候距离谁近就属于谁

(1)public: “公有/公共”的意思。用这个修饰符修饰的成员 (成员变量、成员函数),可以被外界访问。换句话说,一般需要能够被外界访问的成员定义为public,就好像是该结构或类的外部接口。

对于用struct定义的结构来讲,默认的情况下,所有的成员变量和成 员函数都是public的,所以,前面定义的student结构等价于如下:

68a69c6d6e9646eaa56145ec7a0a72c5.png

也就是 student mk;

mk.number=1;//是可以被外界调用的

(2)private: “私有”的意思。用这个修饰符修饰的成员,只能被该结构或类内部定义的成员函数使用

现在如果把student结构中的成员全部定义成private

3b54087a78e54e68ae1f5835e76d91a7.png

也就是 student mk;mk.number=1;//报错,不可调用

只有struct内部定义的成员函数才能访问number

三、类简介:类也是一种用户自定义的数据类型

(1)不管C语言还是C++中,结构都用struct定义。

(2)为了方便读者理解,前面曾经说过:把C语言中的结构当成 C++中的类。这个说法并不全面。

注意:

(1)类,只在C++中才有的概念,C语言中并没有类的概念。

(2)结构用struct定义,类用class定义。

在C语言中,定义一个属于某个结构的变量,会称其为“结构变量”。

在C++中,定义一个属于某个类的变量,会称其为“对象” ,其实读者在理解的时候,直接把对象理解成结构变量即可。

不管“结构变量”还 是“对象” ,无非就是一块“能存储数据并具有某种类型的内存空间”。实际上,它们就是一块内存,内存中存着很多东西

(3)C++中结构和类绝对是极其类似的,谈一谈结构和类到底有什么区别?

① C++中结构体内部成员变量及成员函数默认的访问级别是public, 而C++中类的内部成员变量及成员函数的默认访问级别是private。“对象名.成员”的方式来访问类中的成员

② C++中结构体的继承默认是public,而C++中类的继承默认是 private。

综合结论:C++中,如果定义结构或者类的成员变量或者成员函数时,都明确地写出访问级别public、protected、private等,那么C++中的结构和类就没什么区别,定义的时候写成struct也可以,写成class也行。

四、类组织:书写规范

① 类的定义代码放到一个.h头文件中,头文件名可以和类名相同,student.h

② 类的具体实现代码(一般都是成员函数的实现代码)放到 一个(或多个).cpp文件(源程序文件)中,这个.cpp文件的主文件名一般也和类名相同

e43bdde27cc64c33bfe38b364cbd4204.png

06e6d0b144e543cab814ab304c32bf5e.png

5188dd9ded924392999e09f733b4665f.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EBU7140 Security and Authentication(三)密钥管理;IP 层安全

B3 密钥管理 密钥分类: 按时长: short term:短期密钥,用于一次加密。long term:长期密钥,用于加密或者授权。 按服务类型: Authentication keys:公钥长期,私钥短期…

【InnoDB数据存储结构】第1章节:数据页存储结构

目录结构 之前整篇文章太长,阅读体验不好,将其拆分为几个子篇章。 本篇章讲解 InnoDB 数据页的存储结构。 数据的存储结构 索引是在存储引擎中实现的,MySQL 服务器上的 存储引擎负责对表数据的读取和写入。 但是不同存储引擎对 数据存放格…

Open3D 最小二乘拟合平面——拉格朗日乘子法

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接Open3D 最小二乘拟合平面——拉格朗日乘子法。爬虫自重。 一、算法原理 设拟合出的平面方程为: a x + b y +

宣传照(私密)勿转发

精美的海报通常都是由UI进行精心设计的,现在有100 件商品需要进行宣传推广,如果每个商品都出一张图显然是不合理的,且商品信息各异。因此需要通过代码的形式生成海报。对此,我也对我宣传一波,企图实现我一夜暴富的伟大…

Nice Water Shader

非常好的水着色器! 标准RP上的新程序泡沫!!(URP即将推出) URP支持!! 有3个版本: -台式机 -移动设备 -桌面拼接 有灯光支持!! 使用 CUSTOM SHADER INSPECTOR(自定义着色器检查器) 个性化事物的能力,如: 镶嵌图案 3种不同颜色,形成渐变深度 色彩位置优势 菲涅耳颜色和…

[讲座] - 闲聊工业设计

1,工业设计相关的学科分类 2,工业设计的职业发展路线 3,工业设计师的成名人物 4,设计了可口可乐的Loewy 可口可乐的瓶子,无论白天晚上还是瓶子被打碎,都能认出这个是可口可乐的瓶子。 草图参照了可可豆&am…

GZ075 云计算应用赛题第4套

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷4 某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenSt…

Oracle笔记-查看表已使用空间最大空间

目前以Oracle18c为例,主要是查这个表USER_SEGMENTS。 在 Oracle 18c 数据库中,USER_SEGMENTS 是一个系统表,用于存储当前用户(当前会话)拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位,用于存…

数据结构和算法-数据结构的基本概念和三要素和数据类型和抽象数据类型

文章目录 总览数据结构的基本概念总览数据早期和现代的计算机处理的数据数据元素-描述一个个体数据对象-一类数据元素什么是数据结构小结 数据结构的三要素总览逻辑结构-集合结构逻辑结构-线性结构逻辑结构-树形结构逻辑结构-图形结构逻辑结构-小结数据的运算物理结构&#xff…

JAVA对象、List、Map和JSON之间的相互转换

JAVA对象、List、Map和JSON之间的相互转换 1.Java中对象和json互转2.Java中list和json互转3.Java中map和json互转 1.Java中对象和json互转 Object obj new Object(); String objJson JSONObject.toJSONString(obj);//java对象转json Object newObj JSONObject.parseObject(…

一类医疗器械需要做EMC和安规吗?

摘要: 在医疗器械领域,EMC(电磁兼容性)和安规(安全规格)测试是非常重要的。医疗器械需要符合电磁兼容性标准,以确保其在电磁环境下能够正常运行而不会受到外部电磁干扰的影响,也不会干扰其他设备…

IOS - 手机安装包 ipa 常见几种方式

安装 ipa 包的方法有很多中,可以通过不同的软件安装,本文只列出了常用的几种,做个简单的归纳整理 1、iTunes 安装 数据线连接手机之后,会自动连接iTunes,(第一次连接的时候会提示是否信任此电脑&#xff0…

小红书、抖音、视频号下载工具:随心管理个人作品集 | 开源日报 No.134

karanpratapsingh/system-design Stars: 20.6k License: NOASSERTION 这个项目是关于系统设计的。它提供了有关系统设计的课程内容,包括 IP、OSI 模型、TCP 和 UDP 等主题。该项目的核心优势和特点如下: 提供全面而高效的系统架构定义。从基础设施到数…

k8s的声明式资源管理

在k8s当中支持两种声明资源的方式: 1、 yaml格式:主要用于和管理资源对象 2、 json格式:主要用于在API接口之间进行消息传递 声明式管理方法(yaml)文件 1、 适合对资源的修改操作 2、 声明式管理依赖于yaml文件,所有的内容都…

小白入门基础 - tomcat

一:前言 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为&#x…

【解决】Unity 设置跨设备分辨率表现

开发平台:Unity 2018版本以上 开发语言:CSharp 编程平台:Visual Studio 2022   问题描述 使用 UnityEngine.dll 中关于设置分辨率的方法时,无法满足应用以设定分辨率进行屏幕显示问题。因而造成画面不同程度的拉伸情况。而这种情…

[概率论]四小时不挂猴博士

贝叶斯公式是什么 贝叶斯公式是概率论中的一个重要定理,用于计算在已知一些先验信息的情况下,更新对事件发生概率的估计。贝叶斯公式的表达式如下: P(A|B) P(B|A) * P(A) / P(B) 其中,P(A|B)表示在事件B发生的条件下事件A发生的概…

【Emgu.CV教程】第21篇 、色彩处理之ConvertTo()函数改变图像的亮度和对比度

先画重点: 亮度是指图像的整体明亮程度。增加亮度会使图像整体变得更加明亮,而减少亮度则会使图像变暗。对比度是指图像中不同区域之间亮度差异的程度。它衡量了图像中最亮和最暗区域之间的差异。对比度高的图像明暗差异大,而对比度低就是明…

2024.1.2 安装JDK和Eclipse,并配置java编译环境

2024.1.2 安装JDK和Eclipse,并配置java编译环境 一直对java一知半解,利用春节前一个月时间补补课。 一、安装jdk 首先在oracle官网上下载jdk,这里选jdk17,选择第二项直接安装,第一项是压缩文件,带有一些…

二分图的最大权匹配

二分图的最大权匹配 二分图的最大匹配 匈牙利算法 思路&#xff1a;将点分为两类&#xff0c;左边的点和右边的点。每次尝试给左边的点找一个右边的点与之匹配&#xff0c; for (int i 1; i < n; i) {Arrays.fill(st, false);//为什么要每次都要重置stif (find(i)) res…