【C++】005、struct与class的区别

C++实现量子启发式算法:原理、框架与工程实践 量子计算的核心概念,如叠加态和量子纠缠,为解决复杂优化问题提供了全新的理论视角。其原理在于利用量子系统的并行性和概率特性,在庞大的解空间中进行高效搜索。这一思想催生了量子启发式算法,它并非运行于量子硬件,而是将量子力学中的优化思想经典化,在传统计算机上实现。其技术价值在于为组合优化、机器学习特征选择等NP难问题提供了跳出局部最优解的新途径,尤其适用于金融建模、芯片设计等高性能计算场景。本文以量子遗传算法(QGA)为例,结合C++的高效实现,深入探讨了如何将量子比特的概率幅编码、量子旋转门更新等核心机制工程化 阅读详情

一、语法区别

在C++中,struct与class,除了默认访问权限和默认继承权限不同,其他功能都完全等价

对比

struct

class

成员默认访问权限

public(公开)

private(私有)

继承默认访问权限

public(公有继承)

private(私有继承)

代码:

struct S { int a; };      // a 默认 public
class C { int b; };       // b 默认 private

struct D1 : S { };        // 默认 public 继承(S的public成员仍是public)
class D2 : S { };         // 默认 private 继承(S的public成员变成private)
  • 除了上面两点不同外,包括成员,构造函数,析构函数,运算符重载,模版参数,和继承多态等都一样

  • 注意:在C语言中,struct没有函数,他只是数据集合体

二、struct与class在工程中的使用场景

使用场景推荐用 struct推荐用 class
纯数据容器/POD(Plain Old Data)✅ 比如 Point{int x, y;}、RGBColor{uint8_t r,g,b;}❌ 过度设计
没有私有成员、没有复杂行为✅ 仅用来聚合数据,不包含逻辑❌
有复杂业务逻辑/封装/多态❌ 容易误导阅读者✅ 体现面向对象设计
需要访问控制(private/protected)❌ 虽然可以写,但语义不符✅
C语言兼容的头文件✅ 必须用struct(C语言没有class)❌ C编译器不识别

总结:当你只想把数据包在一起时用struct,当你想构建一个具有不变量的对象时用class

  • 代码:

// ✅ 好:struct 表示纯粹的数据聚合
struct Vec3 {
    float x, y, z;
};

// ✅ 好:class 表示有约束的实体对象
class BankAccount {
private:
    double balance;  // 必须 >= 0,有业务约束(不变量)
public:
    void deposit(double amount) { /* 校验逻辑 */ }
    void withdraw(double amount) { /* 校验逻辑 */ }
};

三、底层本质

  • 在汇编代码层面,struct与class没有任何区别,都是类类型,编译器只关心成员的偏移量和类型

  • C++要保留struct,是为了C语言的向后兼容

四、模版参数

  • C++中,struct不能作为模板的template的类型参数

  • 只能使用class或typename引入类型参数

五、struct在C与C++语言中的区别

  • 在C语言中,struct只包含数据,没有成员函数,也无继承等相关功能

  • 但在C++语言中,struct已经是具备了class类的能力了

具身智能工程师的硬核知识骨架:C++、Linux、离散数学与信号系统 具身智能是AI与物理世界深度耦合的交叉领域,其核心在于实时性、确定性与物理可执行性。它并非单纯依赖大模型或机器人外壳,而是建立在底层系统能力之上:C++提供内存与时序的绝对控制力,Linux承担实时调度与硬件抽象的神经中枢角色,离散数学支撑状态机建模与多智能体协同逻辑,信号与系统则是传感器数据处理与噪声抑制的理论根基。这四者共同构成从感知、决策到执行的完整闭环能力链。本文聚焦真实产线与实验室验证的工程实践路径,覆盖毫秒级控制循环实现、PREEMPT_RT内核调优、机器人动作状态建模、IMU卡尔曼滤波落地等关 阅读详情

相关推荐

10分钟部署RAG Discord Bot:AI学习者实战入门指南

RAG(检索增强生成)是当前大模型落地最主流的技术范式,其核心原理在于将外部知识库与语言模型动态结合,突破模型固有知识边界。该技术显著提升回答准确性与可解释性,避免幻觉,已成为智能客服、企业知识助手、AI编程辅助等场景的工程标配。对于初学者,关键挑战并非理论理解,而是环境配置、工具链选型与调试反馈闭环——例如如何在无GPU设备上快速启动向量检索、怎样选择轻量级本地向量库、以及如何将LangChain与Discord等常用平台无缝集成。本文以‘10分钟RAG Discord Bot’为锚点,聚焦ChromaD

323

C/C++ 一些知识点总结

临时整理的,有些可能不对。 1)如果一个类里面有const-qualifier或reference, compiler不会为它生成default copy assignment operator函数。 2) Hidden是指子类和父类有同名函数,但又没有virtual关键字。这里函数只要同名就可以了,参数并不需要match。也就是说,compiler只要在子类看到有这个函数名,即使参数不...

roufoo的博客 3399

C++怎么学?零基础也可以,一份完整学习路线图助你搞定!

提供一条清晰、系统且实践导向的C++学习路径。从基础语法、面向对象、泛型编程、异常处理,逐步深入STL、智能指针、并发编程等现代C++高级特性。无论是新手还是希望提升,通过系统学习与项目实践,助您将理论知识转化为实际解决问题的能力。

Lion_Long的博客 4024

RGF(仓颉版)渐变画刷实战:LinearGradientBrush 创建、参数详解与矩形绘制应用

本文基于 RGF_CJ 开源仓库的官方教程文档([doc/course/012_使用渐变画刷.md](https://link.gitcode.com/i/3ccb24fc3567e7258bad7a5f49401444)),系统讲解在仓颉(Cangjie)语言下如何使用 RGF 渲染框架的线性渐变画刷(`LinearGradientBrush`),完成从创建、配置到绘制图形的完整闭环。读完本文,

gitblog_00391的博客 13

【合规领域】【信息科学与工程学】计算机科学与自动化——第五百篇 国产化/XC解决方案 第八篇 壁仞GPU硬件芯片适配01

对矩阵 C=A×B,其中 A∈RM×K,B∈RK×N,C∈RM×N:// custom_op.cpp - 壁仞设备端算子// 壁仞T-Core张量乘加封装// 调用壁仞T-Core专用指令// 编译器会自动将此映射为BISA的MMA指令// 全局Kernel// 每个CTA处理一个(batch, head)对的注意力计算// 通过BRCC的Memory Migration Pass自动优化数据搬移// 协作加载Q到共享内存。

weixin_49199313的博客 89

【信息科学与工程学】【制造工程】第三十六篇 机械工程与自动化101

本系统通过多模型集成、知识增强、主动学习和持续优化等关键技术,实现了高效、高质量的自动化文本语料标注。系统采用模块化设计,支持灵活扩展,能够处理不同类型的文本数据,适应多样的标注需求。

weixin_49199313的博客 965

从零手搓 Lumen 第一帧:6个月渲染引擎学习路线与工程拆解

实时全局光照是渲染引擎中的核心技术方向,UE5 的 Lumen 通过 SDF 追踪、屏幕追踪、Surface Cache 等组合方案,在无需硬件光追的条件下实现了动态全局光照与反射效果。理解 Lumen 的关键在于认识到它并非单一算法,而是一套多 Pass 渲染与缓存管理的工程系统。从图形 API 基础到光线追踪原理,再到缓存机制与性能优化,掌握这套体系需要循序渐进的工程实践。对于图形学开发者、游戏引擎研究者和渲染工程师而言,通过自行搭建一个简化但原理一致的全局光照系统,能够深入理解实时渲染的底层逻辑。本文

weixin_30634661的博客 300

低速电动车人机共享控制架构与落地实践

人机共享控制是智能驾驶中兼顾安全性与实用性的关键范式,其核心在于驾驶员与车载系统在动态场景下实时协商控制权。该技术基于多传感器可信感知、双轨意图建模与CAN FD指令仲裁,突破传统L2/L4架构局限,显著提升接管连续性与协同鲁棒性。在0–40km/h城市场景(如社区通勤、校园接驳、医疗转运)中,它以低成本适配国产电动底盘,支持扭矩介入、踏板反力反馈等自然交互方式,并通过Jacobian稳定性分析保障耦合安全。本文聚焦低速电动汽车智能驾驶落地路径,涵盖感知融合、动态权重分配、执行层确定性通信及实车标定方法。

weixin_34152820的博客 351

基于STM32的大功率步进电机驱动系统设计与实现

步进电机作为精密运动控制的核心执行元件,其驱动技术直接影响系统性能。大功率步进电机驱动面临功率器件热管理、电流检测精度和电磁兼容性等关键技术挑战。通过STM32微控制器的高级定时器实现精确的PWM控制和微步细分算法,结合MOSFET功率模块和闭环电流控制,可显著提升驱动系统的扭矩输出和运动平稳性。这种技术方案在机械臂、3D打印机、CNC机床等工业自动化场景中具有重要应用价值,特别是针对NEMA 34等大扭矩电机的驱动需求,能够以较低成本实现媲美商业驱动器的性能表现。

weixin_30500473的博客 329

STM32+Edge Impulse模型部署:IAR嵌入式级优化实战

嵌入式机器学习推理是指在资源受限的MCU上运行轻量化神经网络模型,其核心挑战在于编译器对定点运算、内存布局与硬件加速指令(如CMSIS-NN)的支持能力。ARM Cortex-M系列MCU(如STM32F429)具备DSP指令集和确定性实时特性,是端侧AI落地的理想平台;而Edge Impulse提供从数据采集、训练到C++ SDK导出的完整闭环,但模型能否稳定高效运行,高度依赖工具链的底层控制力。IAR Embedded Workbench凭借对Flash段符号级定位、CMSIS-NN深度内联优化及Har

weixin_34006468的博客 405

URDF模型转换实战:解决SolidWorks到Gazebo的五大常见问题

本文详细解析了从SolidWorks导出URDF模型到Gazebo仿真过程中常见的五大问题及解决方案,包括插件安装、坐标系建立、Link与Joint配置等关键步骤。通过实战经验分享,帮助机器人仿真工程师高效完成模型转换,确保Gazebo仿真准确性。

weixin_29052717的博客 445

如何用 opc-cli 本地生成原创歌曲:MiniMax Music3 三段式 Caption 与时长验收完整指南

用 **opc-cli** 的 `opc music` 命令,可以在本地 ComfyUI 上跑通 **MiniMax Music3** 音乐大模型,输入一段编曲描述和三段式 Caption 加带段落标签的歌词,就能生成一首原创歌曲。本文面向新手,完整拆解 Music3 的三段式 Caption 结构、歌词标签写法,以及 OPC 内置的时长验收与自动重试机制,帮你一次生成合格的本地原创歌曲。 [!

gitblog_00362的博客 183

网络设备调试指南:如何用MDIO Clause22/45协议读写Marvell MV88E6390寄存器

本文深入解析了如何通过MDIO Clause 22/45协议对Marvell MV88E6390交换芯片进行寄存器读写调试。文章详细对比了两种协议的本质区别与适用场景,并重点阐述了MV88E6390的直接与间接寻址策略,提供了实战代码示例与关键调试技巧,帮助网络工程师高效解决配置与通信问题。

tequila的博客 517

《Pinocchio入门》第 14 章 计算力矩控制与模型误差:把「抵消」做到底,再量出它的代价

本章解决一个问题:第 13 章的 PD+重力补偿已经把机械臂稳稳带到终点了,那为什么还要费劲算质量矩阵 M?答案分两半——模型准时它能好一个量级,模型不准时它坏得也最快。这两半都要用实测数字说话,本章把它们都量出来。

ai2work的博客 209

Mac 不小心断开移动硬盘导致磁盘无法读取和加载(顺利解决!)

Mac移动硬盘不正确断开连接导致无法读取加载的解决方法,亲测有效

Robin_Pi的博客 1万+

【SLAM论文笔记】SplaTAM论文小结

参考方法有ORB-SLAM3、Point-SLAM、NICE-SLAM、Kintinuous、ElasticFusion,测试数据集有ScanNet++、Replica、TUM-RGBD、Orig-ScanNet,SpaTAM并未在全部对比均为第一,表现最佳的是在ScanNet++、Replica,ScanNet++上SplaTAM方法位姿精度比第2名ORB-SLAM3高两个数量级,在TUM。上无稀疏SLAM结果,NICE-SLAM与Point-SLAM占优。SplaTAM基本做到了SOTA。

持之以恒 1009

嵌入式Linux面试核心能力:硬件感知、BSP bringup与驱动调试实战

嵌入式Linux开发不是单纯的操作系统使用,而是软硬协同的系统工程——从CPU寄存器配置、设备树编译、内核模块加载,到USB协议栈调试与DDR PHY校准,每一步都需穿透用户态、内核态、硬件层的多维认知。其技术本质是建立‘硬件行为—驱动逻辑—系统响应’的闭环映射能力,典型体现为CP2102驱动加载失败时能快速定位到USB PHY握手异常,或BSP bringup中精准裁剪设备树节点而不引发驱动缺失。这种能力支撑工业控制、边缘网关、智能终端等真实场景的稳定交付,也是嵌入式岗位区别于通用软件开发的核心分水岭。

weixin_34163553的博客 384

TSMaster实战:手把手教你用C小程序发送自定义CAN报文(附完整代码)

本文详细解析了如何使用TSMaster的C小程序功能实现自定义CAN报文发送,涵盖环境配置、DBC集成、按键触发等实战技巧。通过完整代码示例和高级调试方法,帮助汽车电子工程师快速掌握TSMaster在CAN总线通信中的灵活应用,提升开发效率。

weixin_29184371的博客 574

《Pinocchio入门》第 13 章 关节空间轨迹规划与 PD 控制:把前面所有章节接成一条能跑的回路

本章解决一个问题:给一个起点和一个终点,怎么让 6 自由度机械臂平滑地走过去、并且真的停在那里。前 12 章的每一块知识都在这里汇合:正运动学量末端误差,crba 量出各关节有多重,aba 充当被控对象,重力项决定你停不停得住。

ai2work的博客 223

【人工智能】广度优先搜索(BFS)在人工智能中的应用(Python源码)

本文系统阐述了广度优先搜索(BFS)算法在人工智能领域的核心原理与应用。作为无信息搜索算法,BFS通过FIFO队列实现节点遍历,保证在无权图中的最优性。文章详细解析了BFS的伪代码实现和Python编程示例,并通过机器人路径规划案例展示了其实际应用场景。测试结果表明,BFS能有效解决包含障碍物的网格寻路问题,验证了算法在AI领域的实用价值。该研究为理解基础搜索算法及其工程应用提供了重要参考。

梦想起飞的地方 1142

基于上下文的 Listwise 重排模型(一):miRNN

2018年阿里团队提出的miRNN(Mutual Influence aware RNN)模型,首次将电商搜索重排建模为全局优化问题,通过RNN捕捉商品序列的相互影响,结合Beam Search生成最优排序,在淘宝搜索中实现GMV(商品交易总额)提升5%的突破。本文将结合论文细节与通俗案例,拆解这一工业级重排框架的核心逻辑。

进一步有进一步的欢喜~ 1918

PyTorch深度学习实操地形图:从MNIST到工业部署的6大障碍突破

深度学习并非抽象理论堆砌,而是以神经网络为载体、梯度下降为引擎、数据预处理为基石的工程实践过程。理解PyTorch中张量维度规则、自动求导机制与模型状态管理,是跨越‘概念懂’到‘代码通’断层的关键。本文聚焦真实训练场景中的典型故障——如输入维度错误、梯度消失、CUDA显存溢出、过拟合恶化及模型加载失败——结合MNIST端到端项目,将梯度下降、过拟合、数据预处理等核心概念嵌入可调试、可验证、可复现的操作流中,为初学者提供一条避开认知陷阱、直抵工业落地的最小可行路径。

weixin_38166557的博客 323

自定义View系列教程04--Draw源码分析及其实践

通过之前的详细分析,我们知道:在measure中测量了View的大小,在layout阶段确定了View的位置。 完成这两步之后就进入到了我们相对熟悉的draw阶段,在该阶段真正地开始对视图进行绘制。按照之前的惯例,我们来瞅瞅View中draw( )的源码 public void draw(Canvas canvas) { final int privateFlags = mPriv

谷哥的小弟 2万+

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 284

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 197

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 【C++】004、C与C++的最核心的区别
下一篇: 【C++】006、#define与const的区别
Tim_10
博客等级 码龄2年 162粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值