- 博客(14)
- 收藏
- 关注
原创 C++ 类内非静态与静态成员变量的区别
非静态成员变量:类内声明 → 确定对象布局 → 随对象创建分配内存 → 无需类外定义;静态成员变量:类内仅声明 → 需类外定义分配内存(C++17 内联静态除外) → 类级别共享,与对象无关。补充:const 整型静态成员变量(如)是传统规则中的特例,可在类内直接初始化(本质仍是声明,通常需类外定义,但部分编译器可优化),而 C++17 的 inline 静态成员变量则彻底解决了这一特例的繁琐问题。
2026-03-08 10:25:17
179
原创 C++ 作用域(Scope)详解
核心规则:标识符的可见范围遵循「就近原则」,内层作用域(如局部、代码块)的同名标识符会覆盖外层作用域(如全局、命名空间)的标识符。常见类型:全局作用域(整个程序)、局部作用域(代码块内)、命名空间作用域(解决命名冲突)、类作用域(类成员专属),以及函数参数、静态局部等特殊作用域。关键工具:`::`(作用域解析符),可显式指定访问的作用域,避免同名标识符冲突,例如访问被覆盖的全局变量、指定命名空间/类中的标识符。
2026-03-08 10:22:25
330
原创 C++多继承构造函数调用顺序及继承声明顺序解析
构造核心顺序:虚基类(按继承声明顺序)→ 非虚基类(按继承声明顺序)→ 派生类成员变量(按声明顺序)→ 派生类构造函数体;继承声明顺序定义:派生类定义时,后基类列表的书写顺序(如的顺序是 Base1→Base2);关键原则:基类构造函数调用顺序由继承声明顺序决定,与构造函数初始化列表顺序无关;无关因素:基类的访问修饰符不影响继承声明顺序,仅影响访问权限;反向规则:析构函数调用顺序与构造函数完全相反;记忆口诀:“写在前面的基类,构造函数先调用”,这里的“写的顺序”就是继承声明顺序。
2026-03-06 22:05:06
362
原创 C++虚继承(virtual inheritance)详解
虚继承是C++解决菱形继承二义性和数据冗余的核心手段,核心是让多个子类共享同一个基类实例。使用方法:在中间子类继承顶层基类时,添加virtual关键字(格式:class 子类名 : virtual 继承方式 基类名)。核心效果:虚基类仅被构造一次,最终子类中仅保留一份基类成员,既消除访问歧义,又节省内存。
2026-03-06 22:04:48
386
原创 C++ const类数据成员初始化方法及初始化时机详解
初始化核心原则:变量/对象的初始化,必然发生在其分配内存的那一刻,内存分配与赋初始值同步完成;非静态const成员:必须通过构造函数初始化列表初始化,不能在类内直接赋值(无内存,无法初始化),也不能在构造函数体赋值(已错过初始化时机,属于修改);静态const成员:整型/枚举可类内直接初始化(编译期常量,无需运行时内存);非整型需类内声明、类外初始化(类外不加static),初始化时机在程序启动前;关键提醒。
2026-03-01 16:45:04
537
原创 C++友元机制详解(友元函数+友元类)
核心价值:在保持类封装性的前提下,为特定场景提供私有成员的访问权限,是对封装原则的灵活补充。核心使用场景:最常用的是重载<<>>等运算符,其次是提高代码效率、实现类间双向访问。核心原则:友元是“必要时才使用”的工具,需平衡灵活性与封装性,避免滥用。特性友元函数友元类作用对象单个/多个独立的外部函数整个外部类(包含其所有成员函数)访问权限范围仅该函数能访问类的私有/保护成员该类的所有成员函数,均能访问类的私有/保护成员声明方式friend 返回值 函数名(参数列表);
2026-03-01 12:08:31
580
原创 Xilinx CLB(可配置逻辑块)详细介绍
CLB是Xilinx FPGA中重复排列的核心逻辑单元,是构成FPGA逻辑阵列的主体部分。FPGA的所有基础功能,包括组合逻辑、时序逻辑、分布式存储、移位寄存器等,最终都会映射到CLB内部实现。此外,CLB通过可编程互联资源(PIR/开关矩阵),可与相邻CLB、输入输出块(IOB)、块RAM(Block RAM)、DSP48等硬核模块实现灵活互联,进而构成完整的数字电路系统。
2026-02-28 08:06:11
586
原创 FPGA中IOBUF、IOBANK与IOBLOCK的区别与解析
概念层级核心作用通俗类比IOBUF物理/电路层实现信号的驱动、电平转换、方向控制和ESD保护,是IO的基础硬件。火车站的站台设施(检票闸机、候车椅),是最基础的服务单元。IOBLOCK功能单元层封装缓冲器、寄存器等资源,提供完整的IO功能,可灵活配置适配不同需求。火车站的单个站点(包含站台、候车厅、进出站口),具备完整的乘车服务功能。IOBANK架构/电源层划分IO区域,提供独立供电,统一电压标准,管理所属IOBLOCK。城市的火车站区域。
2026-02-28 08:05:53
538
原创 C++中类的作用域核心知识点
从定义看:类定义的花括号{}内就是类作用域。从成员访问看:成员函数内可以直接使用其他成员(按声明顺序有限制),无需额外限定。从外部看:类外部需要通过对象、指针或类名加作用域运算符来访问类的成员(受访问控制限制)。从继承看:派生类作用域“包含”基类作用域(查找时)。从嵌套看:嵌套类位于外围类作用域内,但有自己的类作用域。理解类的作用域是掌握 C++ 面向对象编程的基础,它能帮助你写出更清晰、不易出错的代码。
2026-02-27 08:21:01
330
原创 C++中this指针与静态成员的核心知识点
this`指针仅存在于非静态成员函数中,静态成员函数无`this`指针,是两者核心区别。静态成员变量:非静态/静态成员函数均可直接访问(权限允许),并非只能由静态函数访问。静态成员函数:仅能直接访问静态成员,需通过对象参数才能间接访问非静态成员。
2026-02-27 08:20:01
63
原创 C++中浅拷贝与深拷贝的核心区别
浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是C++对象复制中的核心概念,二者的差异主要体现在对指针成员的处理上,直接决定了程序的内存安全性,尤其当对象包含堆内存指针时,正确区分和使用二者至关重要。if (this == &other) { // 防止自赋值(如s1 = s1),避免内存泄漏。// 修改s2的字符串,会同步修改s1的内容(共用内存)// 浅拷贝:s2.str 与 s1.str 指向同一块堆内存。// 深拷贝:s2.str 指向独立的堆内存。// 指针成员,指向堆内存。
2026-02-26 08:51:59
354
原创 拷贝构造函数调用的4种场景
/ 形参是值传递(不是引用/指针)// 调用拷贝构造(返回时创建临时对象,用s拷贝)Student s3(s1);// 拷贝构造(同上,两种初始化写法都考)关键:把对象放进容器(vector、数组等),本质是给容器造新对象,需用原对象拷贝。// 拷贝构造(用s1初始化新对象s2)// 调用拷贝构造(形参obj是新造的对象)关键:值返回会创建临时对象,本质是用函数内的对象,造新的临时对象;// 普通构造(不涉及拷贝)关键:值传递时,形参是全新对象,需用实参拷贝生成;,只要是新对象由旧对象初始化,就调用。
2026-02-26 08:22:23
45
原创 为什么new类名赋给指针会调用构造函数?
cout << "构造函数调用:num初始化为" << num << ",对象地址:" << this << endl;,只要在内存中为类分配了空间、完成了初始化,就等于创建了对象,有没有“名字”,只是是否给这个对象起了别名而已。cout << "指针存储的地址:" << ptr << endl;cout << "对象num值:" << num << endl;作为C++面向对象的关键字,设计目标是“创建可用的对象”,不是“单纯分配一块空内存”。// 通过指针调用成员函数,证明对象可用。
2026-02-23 22:46:05
505
原创 Xilinx 裸机驱动的通用核心规则
Xilinx 裸机驱动的核心是5 个统一:数据结构、初始化流程、命名规范、参数传递、错误处理;所有 IP 的使用都遵循 “查找配置→初始化实例→硬件配置” 三步法,仅第三步的 “特有配置” 不同;掌握这套规则后,你可以快速迁移到任意 Xilinx IP 的驱动开发,无需逐个学习。后续学习新 IP(如 SPI、I2C)时,只需先找对应的和完成初始化,再查手册找该 IP 的 “特有配置函数” 即可,核心逻辑完全复用。
2026-02-11 10:18:49
678
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅