【C++篇】~类和对象(上)

news2024/9/21 4:26:24

【C++篇】 类和对象上

  • 一·类
  • 二·实例化
    • 内存对齐原因(用空间换时间,提高效率)

一·类

‘类’class可以理解为C语言阶段的‘结构体’,它的用法与struct大差不差很多地方都相同,但是C++毕竟是C++,类的用法肯定比结构体的用法要简洁一点🤪请添加图片描述
在这里插入图片描述
类和结构体的区别:
1.类可以在类里定义函数,结构体不能!
2.类名可以作类型名
3.class定义成员没有被访问限定符修饰时默认为private,struct默认为public。

• class为定义类的关键字,test为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

• 为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加_ 或者 m开头,如上图,注意C++中这个并不是强制的,只是一些惯例,具体看公司的要求。​

• C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是struct中可以定义函数,一般情况下我们还是推荐用class定义类


• 定义在类面的成员函数默认为inline。
这里没有出现call说明被展开了,是内联函数
在这里插入图片描述

• class定义成员没有被访问限定符修饰时默认为private,struct默认为public。​
• 一般成员变量都会被限制为private/protected,需要给别人使用的成员函数会放为public。

在这里插入图片描述
在类里,一般把成员函数定义为公有,把成员变量定义为私有,防止在类域外对类里的变量随意定义,一般类里如果没定义那就默认是私有的,结构体里默认的是公有的

二·实例化

内存对齐规则
• 第一个成员在与结构体偏移量为0的地址处。​
• 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
• 注意:对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。​
• VS中默认的对齐数为8​
• 结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍。
• 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小
就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。

在这里插入图片描述

这里的test3里虽然没有成员,但是它的大小是‘1’,这是为了占位

内存对齐原因(用空间换时间,提高效率)

这里还要说一下,为什么要内存对齐,因为在读数据时都是从要读的数据大小的整数倍位置开始读,如果没对齐那么读完所有数据肯定要读好几遍,效率较低,而内存对齐很好地解决了这个问题

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

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

相关文章

Linux Kernel 6.12版预计将支持在崩溃后显示二维码 后续可以解码排查错误

7 月份时红帽工程师基于 systemd 255 版的全屏显示错误消息功能为 Linux Kernel 开发崩溃后显示二维码选项,这与微软在 Windows 10/11 蓝屏死机后显示二维码有异曲同工之妙。 不过 Linux 与 Windows 在崩溃时显示的二维码内容则有本质区别,因为 Window…

单链表反转(C语言)

1 问题描述 力扣(LeetCode)--反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 例如: 输入:head [1,2,3,4,5]输出:[5,4,3,2,1] 输入:head [1,2]输出&#x…

11 Java 方法引用、异常处理

文章目录 前言一、Java接口之函数式编程 --- 接口知识补充1 Function<T,R>泛型接口2 BiFunction<T, U, R>泛型接口3 自定义泛型函数式编程接口 二、方法引用1 方法引用初体验&#xff08;以Array.sort()方法为例&#xff09;2 引用静态方法3 引用其他类成员方法 前…

【面试五】PID控制算法

一、 PID算法简介 PID&#xff08;Proportional-Integral-Derivative&#xff09;控制算法是一种经典的反馈控制方法&#xff0c;广泛应用于自动控制系统&#xff0c;例如温度控制、速度控制、位置控制等。 PID控制算法的核心包含三个部分&#xff1a;比例项&#xff08;P&…

@antv/g6 业务场景:流程图

1、流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中&#xff0c;流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程&#xff0c;也可以是完成一项任务必需的管理过程。业务场景流程图如下&#xff1a; 2、绘制流程图的 Tips 流程图一般是用…

计算机毕业设计选题推荐-果树生长信息管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Redis三种集群模式:主从模式、哨兵模式和Cluster模式

1. 总结经验 redis主从&#xff1a;可实现高并发(读)&#xff0c;典型部署方案&#xff1a;一主二从 redis哨兵&#xff1a;可实现高可用&#xff0c;典型部署方案&#xff1a;一主二从三哨兵 redis集群&#xff1a;可同时支持高可用(读与写)、高并发&#xff0c;典型部署方…

探索Python数据持久化的秘密:ZODB库的神奇之旅

文章目录 探索Python数据持久化的秘密&#xff1a;ZODB库的神奇之旅背景ZODB是什么&#xff1f;如何安装ZODB&#xff1f;简单库函数使用方法场景应用常见Bug及解决方案总结 探索Python数据持久化的秘密&#xff1a;ZODB库的神奇之旅 背景 在Python的广阔世界中&#xff0c;数…

基于单片机的水箱水质监测系统设计

本设计基于STM32F103C8T6为核心控制器设计了水质监测系统&#xff0c;选用DS18B20温度传感器对水箱水体温度进行采集&#xff1b;E-201-C PH传感器获取水体PH值&#xff1b;选用TS-300B浊度传感器检测水体浊度&#xff1b;采用YW01液位传感器获取水位&#xff0c;当检测水位低于…

网络压缩之知识蒸馏(knowledge distillation)

因为直接训练一个小的网络&#xff0c;往往结果就是没有从大的网络剪枝好。知识蒸馏的概念是 一样的&#xff0c;因为直接训练一个小的网络&#xff0c;没有小的网络根据大的网络来学习结果要来得 好。 因而&#xff0c;先训练一个 大的网络&#xff0c;这个大的网络在知识蒸馏…

Flutter 初识:Chip控件

Flutter Chip控件小结 Chip属性解析示例 InputChip属性解析示例 ChoiceChip属性解析示例 FilterChip属性解析示例 ActionChip属性解析示例 在 Flutter 中&#xff0c;Chip 是一种用于显示简洁信息的组件。它通常用来展示标签、属性、短的文本片段等&#xff0c;并可以包含可选的…

C语言推箱子迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <Windows.h> typedef stru…

python内置模块datetime.date类详细介绍

Python的datetime模块是一个强大的日期和时间处理库&#xff0c;它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 使用datetime模块 要使用 datetime模块&#xff0c;直接导…

大模型辅助软件开发,助力工程师的开发之路

大模型与软件工程师&#xff1a;改变开发范式的力量 “是人类工程师的能力&#xff0c;而不是大模型的能力&#xff0c;决定了大模型协作式开发的上限。” 这句话深刻地揭示了在人工智能&#xff0c;尤其是大型语言模型&#xff08;LLM&#xff09;飞速发展的今天&#xff0c…

《数字信号处理》学习02-序列的能量及周期性

目录 一&#xff0c;序列的能量 二&#xff0c;序列的周期性 一&#xff0c;序列的能量 序列能量在数字信号处理中的应用&#xff1a;能量归一化。在信号处理中&#xff0c;有时需要对信号进行归一化处理&#xff0c;使得信号的能量为特定的值&#xff0c;这在一些算法和系统…

无主灯吊顶的精致做法:打造光影艺术的居家空间

在现代家居设计中&#xff0c;无主灯吊顶以其独特的照明效果和空间层次感&#xff0c;逐渐成为追求高品质生活人群的首选。无主灯设计不仅能够有效避免传统主灯带来的刺眼感&#xff0c;还能通过多点光源的巧妙布局&#xff0c;营造出温馨、舒适的居家氛围。作为无主灯照明灯具…

洛谷 P3183 [HAOI2016]食物链(记忆化搜索/拓扑排序)

[HAOI2016]食物链 给定 n 个物种和 m 条能量流动关系&#xff0c;求其中的食物链条数。物种的名称从 1 到 n 编号&#xff0c; M 条能量流动关系形如 a1​→b1​,a2​→b2​,a3​→b3​⋯am−1​→bm−1​,am​→bm​ 其中 ai​→bi​ 表示能量从物种 ai​ 流向物种 bi​ ,注意…

【Linux 驱动】IMX6ULL interrupt驱动

1. GIC驱动初始化 start_kernel (init\main.c) init_IRQ (arch\arm\kernel\irq.c) irqchip_init (drivers\irqchip\irqchip.c) of_irq_init (drivers\of\irq.c) desc->irq_init_cb match->data; ret desc->irq_init_cb(des…

(已开源-CVPR 2024)YOLO-World: Real-Time Open-Vocabulary Object Detection

169期《YOLO-World Real-Time Open-Vocabulary Object Detection》 You Only Look Once (YOLO) 系列检测模型是目前最常用的检测模型之一。然而&#xff0c;它们通常是在预先定义好的目标类别上进行训练&#xff0c;很大程度上限制了它们在开放场景中的可用性。为了解决这一限制…

医学领域实现基于大模型和本地知识库的智能问答系统

在医学领域实现一个基于大模型和本地知识库的智能问答系统&#xff0c;需要考虑医学领域的专业知识和术语。我们将构建一个简单版本的系统&#xff0c;该系统能够处理医学问题&#xff0c;并且能够从本地知识库中检索相关信息来生成答案。 技术栈&#xff1a; 自然语言处理模型…