C++中的类与对象
类与对象
我们在C语言中自定义的struct 叫做结构体,而在C++中我们把struct升级为了类,并且还加入了一个class,也称为类,那么我们今天就来看一下结构体和类的不同和相同
1.结构体与类
我们在C语言中的结构体是struct,而在我们的C++中升级成了类
我们先看一下它们有什么不同
我们先看一下C语言中结构体是如何定义的,这个是我们在C语言中的结构体,如果我们像定义一个obj的对象该怎么弄?
我们看到就是这样,我们需要把struct也写上,所以在C语言中o变量的类型就是struct obj,那么如果我们在C++中该怎么做呢?
我们在C++中struct升级为了类,而在C++中,我们的obj就是对象名,但是我们也可以前面加struct,因为这是为了兼容C语言的语法,不过如果想在C语言中也直接使用obj也是可以的,需要在前面加typedef这个就不演示了
2.类
既然struct在C++中升级为了类,那么C++中其他的类的特性是什么?
我们下面来看一下。
在C++中除了struct可以定义自定义类型外还可以用class来定义,我们先用struct来看一下
由于C语言的封装性太差,我们可以直接访问到类里面的对象,所以使用起来并不是特别的好,那么在C++中,我们还可以在类里面写函数,我们还加入了访问限定符(private protected public)这三个限定符的作用是有不同的作用
下面我们来看一下
2.1 访问限定符
首先是private
这个是private,这个有什么作用呢??
如果我们想访问这里面的三个变量中的任意一个可以吗??
我们看到是不可以的,因为private的意思是私有,在private到下一个访问限定符之前里面的成员函数或者是成员变量都是在该类外面不可访问的,所以不可以直接这样访问
下面在看一下protected
如果是protected呢?
我们还是访问里面三个变量中的任意一个
我们看到protected和private在这里一样都是在类外面不可访问的,这里看不出他们的区别,后面会有不一样的,这里先不说
还剩一个public
这时候我们还是访问里面的变量
这时候我们再看一下 ,我们访问能不能成功
我们看到 这时候是可以访问的,并且还可以修改
2.2 struct 和 class的区别
那么steuct和class的区别是什么呢??
同样是自定义类型他们的区别在哪里呢?
我们来看一下
如果我们不给访问限定符会怎么样?
这时候我们没有给访问限定符,我们想访问一下这里面的变量可以吗?
我们看到是可以的
那么如果这时候我们换成class会怎么样呢??
我们现在还是访问里面的变量
我们看到是不可以访问的,并且我们看到显示stack里面的a是private的,这里说明我们的class没有给访问限定符,但是默认访问限定符是private的,而我们的struct默认访问限定符是public的
结构体和类的区别 (2)
在C语言结构体中,里面只可以放变量,但是在类中我们还可以放函数
我们来看一下,因为这样可以更好的管理
我们还可以这样,把属于这个类的函数也放在这个类里面,在类里面的函数我们成为成员函数,在类里面的函数,而会自动成为内联函数
那么如果我们想调用这个类里面的函数怎么调用呢??
我们在类里面的函数我们直接这样调用
我们直接 “对象.“调用
我们来看一下
我们调用成功
2. 隐藏的this指针
我们来看一个类
我们这里有一个日期类
我们继续看
我们现在定义两个日期类的对象,并且初始化一个,然后我们就分别打印两个对象我们会发送什么呢?
我们一个是缺省值,另一个是给定的值
但是我们调用这个Print函数为什么会打印出不同的内容呢?也就是我们可以分别打印出d1 和 d2的值呢?
这是为什么呢??
这里直接说了,因为在我们成员函数中都有一个默认的this指针
就像这样,如果调用这两个函数,我们的d1. 和 d2. 分别会传入Print函数,就像这样
然后我们打印的时候是这样打印
我们就是这样调用,那么我们传入的时候也是这样
我们调用的时候就是把d1和d2这样传入进去
但是我们在对成员函数传参的时候,我们不能显示的传入this指针,也不能显示的在函数参数那里显示的加上this指针 。
而this指针的传入1编译器就帮我们做了,所以我们也不需要显示的传,但是我们可以在函数中显示的使用
就像这样,我们可以显示的使用
正是因为有这个this指针,所以我们可以准确的打印出对应变量里面的值
所以如果我们想写这个函数的Init函数我们可以直接这样
我们可以这样初始化
我们打印看一下
我们看到是可以的,这个就是隐藏的this指针
相关文章:

C++中的类与对象
类与对象 我们在C语言中自定义的struct 叫做结构体,而在C中我们把struct升级为了类,并且还加入了一个class,也称为类,那么我们今天就来看一下结构体和类的不同和相同 1.结构体与类 我们在C语言中的结构体是struct,而…...
探索Qt图像处理的奥秘:从入门到精通
探索Qt图像处理的奥秘:从入门到精通(Exploring the Secrets of Qt Image Processing: From Beginner to Expert) 引言:Qt图像处理的概述和应用(Introduction: Overview and Applications of Qt Image Processing&#…...

springboot+vue企业人事人力资源管理系统java公司员工出差考勤办公OA系统
“简易云”是这个系统的名字 (6)系统管理:主要下拉分为角色管理、菜单管理; 角色管理:此页面可对角色进行增删改查操作,可修改不同角色的权限; 菜单管理:此页面可配置系统可展示的菜…...
设计模式-模板模式在Java中的使用示例
场景 模板模式 模板模式又叫模板方法模式(Template Method Pattern),是指定义一个算法的骨架,并允许子类为一个 或者多个步骤提供实现。 模板模式使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为型设计模式。 模…...
回溯算法及其应用
回溯是一种常见的算法思想,用于解决许多优化问题。该算法的核心思想是穷举所有可能的解决方案,然后通过剪枝来减少不必要的计算,以获得最优解。 回溯算法常用于求解组合、排列、子集和等问题。通常情况下,回溯算法需要递归地搜索…...
如何一步步打造完美的成绩查询系统平台?
想要搭建一个高效的在线发布成绩查询系统平台,首先需要了解哪些技术和工具是必备的。本文将为您介绍一些主流的技术和工具,帮助您快速搭建一个稳定、安全、易用的成绩查询系统。 想要制作在线成绩查询系统平台有两种方式,第一种是直接使用易…...
P1026 [NOIP2001 提高组] 统计单词个数
题目描述 给出一个长度不超过 200200 的由小写英文字母组成的字母串(该字串以每行 2020 个字母的方式输入,且保证每行一定为 2020 个)。要求将此字母串分成 �k 份,且每份中包含的单词个数加起来总数最大。 每份中包含…...

CTFHub | eval执行
0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…...

IP协议头
IP 4位版本号(version)4位头部长度(header length)8位服务类型(Type Of Service)16位总长度(total length)16位标识(id)3位标志字段13位分片偏移(…...
【xxl-job定时任务框架详解】
一,分布式任务调度 基本概念 分布式任务调度是一种用于在分布式环境中调度和执行任务的技术。在分布式系统中,由于存在多台服务器、多个进程和线程并行执行,因此需要一种机制来协调和管理任务的执行,避免任务冲突、重复执行、负载不均衡等问题。分布式任务调度通常由一个…...

7、在vscode上利用cmake构建多文件C++工程
文章目录 (1)创建如下工程文件夹:其中头文件放在include文件夹中,源文件放在src文件夹中(2)在vscode上打开工程文件夹,在对应的文件夹内建立相应的文件1)目录结构2)各文件…...
Linux操作系统网络模块
Linux操作系统的网络模块是负责网络通信的核心部分。它通过实现各种协议和算法,使得计算机能够在网络中进行数据交换和通信。网络模块主要包括以下几个方面的功能: (1)IP协议栈:负责处理网络层的数据包,实…...

不同批次板子采集到的传感器压力值不同
问题描述: M340B空压机主控板在接正常压力气源时,显示屏显示压力值过高并报警。 问题排查: 确认可能的故障点:压力传感器、硬件电路(供电电路、分压电路、ADC采样电路等)、单片机、软件; 排…...

设计模式--原型模式
目录 基本介绍 传统方式克隆 原型模式改进 浅拷贝和深拷贝 浅拷贝的介绍 深拷贝的介绍 原型模式的注意事项和细节 基本介绍 (1) 原型模式(prototype模式): 用原型实例指定创建对象的种类 并且通过拷贝这些原型 创建新的对象 (2) 原型模式是一种创建型设计模式 允许一个…...

C++智能指针shared_ptr详解
智能指针shared_ptr详解 一、简介二、底层原理2.1、引用计数2.2、shared_ptr的构造和析构2.3、shared_ptr的共享和拷贝2.4、循环引用问题 三、shared_ptr的使用3.1、创建一个shared_ptr3.2、共享一个shared_ptr3.3、使用删除器3.4、解除关联 四、使用示例总结 一、简介 C智能指…...

家政服务APP小程序开发功能详解
随着人们生活水平的提高,对家政服务的要求也越来越高。而传统的到家政公司寻找服务人员的方法显然已经无法满足人们需求,取而代之的是线上预约家政服务。家政服务App小程序软件可以满足用户在线预约,还可以根据自己的需求定制家政服务、选择家…...

【C++】deque的实现原理简单介绍
前言 deque被称为双端队列,它的出现主要是为了结合vector和list的优点并减小它们的缺点,实际上deque确实结合了vector和list的优点减小了它们的缺点,但是它的结合也让它自己的优点没有原始的vector和list那么极致,导致deque变得很…...

UWB隧道人员定位技术应用,施工作业安全精准保障
隧道施工的安全不仅关系到工程项目的质量和施工效率,也关系到我国的资金安全、施工人员和人民的生命财产安全。如何有效加强隧道施工的安全管理能力,成为隧道施工企业管理者最关心的问题。国家铁道局在《关于加强铁路隧道工程安全工作的若干意见》中指出…...

15.2 矩阵链乘法
1.代码 public class MatrixChainMultiplication {public static void main(String[] args) { // 在该代码中,我们首先创建了两个n * n的矩阵m和s,分别用于记录最优值和分割点。 其中m 矩阵 通过i j 来显示在i到j的矩阵链中最优解 // // …...

向隐形冠军学习:聚焦人效,用时间管理提效益
注: 本文来源于盖雅工场联合创始人兼CEO 章新波 在2023狮山论坛“ 向隐形冠军学习: 聚焦人效,用时间管理提效益 ”的主题分享。 文|章新波 整理 |盖雅学苑 在人力资源行业以及各大企业,「人效」这个词…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...