- 博客(251)
- 资源 (12)
- 收藏
- 关注
原创 C++异常处理的实现机制解析
C++ 的异常机制是如何实现的?请简要说明异常抛出、传递与处理的过程。C++ 异常机制是一种结构化的错误处理方案,它通过trythrow和catch实现错误的检测、抛出与捕获。异常机制使得,提高了代码的可维护性和健壮性。
2025-05-14 19:28:45
158
原创 C++异常机制及其处理流程解析
在try块中执行代码;如果某个语句抛出异常(throw),程序跳出try块;从上往下查找能匹配异常类型的catch块;若匹配成功,执行该catch中代码;若未匹配成功,则交给上层函数或触发;异常处理结束后,可继续执行try-catch之后的代码。
2025-05-14 19:28:01
262
原创 inline函数含义及其与宏的区别与优势
对比项inline函数宏定义(#define展开时机编译阶段由编译器处理预处理阶段文本替换类型检查支持类型检查,编译时可发现语法或类型错误无类型检查,可能出现难以发现的错误调试支持支持调试、断点设置替换后源代码不可追踪参数处理真正的参数传递(带作用域)简单替换,若未加括号易出错返回值处理可作为表达式一部分安全使用宏返回值不受类型系统保护,无法安全转换作用域与命名空间支持遵循 C++ 作用域规则,可在类内使用宏不支持作用域管理,全局展开编译器控制。
2025-05-14 19:27:14
240
原创 C++中不可内联的函数情况
在类体中定义的成员函数默认被视为inline;类外定义成员函数需显式使用inline关键字标识,否则不是内联。class A {void func() {} // 默认 inlineinline void A::func2() {} // 明确 inline。
2025-05-14 19:26:14
77
原创 C++中的四种类型转换解析
转换类型用途描述类型检查安全性编译 or 运行时编译时类型转换,基本类型转换,类层级间转换编译期中编译期const_cast增加或去除constvolatile修饰符编译期较安全(需注意原始属性)编译期类层次间指针/引用转换,需虚函数,带类型检查运行时高运行期(RTTI)任意指针/整数之间转换,位级别操作无极低,极易出错编译期。
2025-05-14 19:25:23
180
原创 全局变量与局部变量的区别及实现原理
对比项全局变量局部变量定义位置函数体外,通常在文件作用域或命名空间中函数体内、语句块内,如iffor可见范围从定义处开始到文件末尾(或整个程序)仅在其所在的函数或语句块内部可见访问方式可被多个函数访问(通过声明)仅限定义区域内访问。
2025-05-11 17:15:31
276
原创 基类析构函数不是虚函数会有什么后果
问题点说明子类析构函数未被调用导致资源未释放,内存泄漏delete 操作不安全实际只释放了基类部分破坏面向对象的封装和继承模型析构链不完整编译器不会报错是逻辑错误,依赖程序员设计习惯。
2025-05-11 17:14:37
245
原创 sizeof与strlen的区别
请说明sizeof与strlen的区别,它们各自的功能与应用场景是什么?在 C++ 中,sizeof是一个,而strlen是一个。两者虽然都可用于判断某些数据的“大小”或“长度”,但其用途、行为和适用类型完全不同。
2025-05-11 17:13:04
293
原创 sizeof使用总结与注意事项
请系统地总结 C++ 中sizeof运算符的行为和相关注意事项。sizeof是 C++ 中的一个,用于计算一个类型或对象在内存中所占的。理解它的语义与底层内存模型密切相关,在数组、结构体、指针、类等多种场景下都非常实用。
2025-05-11 17:12:20
379
原创 const关键字的主要用途
请说明 C++ 中const关键字的常见用途及其含义。在 C++ 中,const用于定义不可变的值或不可修改的对象行为,是提升代码安全性、可读性与维护性的关键修饰符。其作用可用于。
2025-05-10 21:32:02
276
原创 拷贝构造函数为何不能用值或指针作参数
面试官:在 C++ 中,为什么拷贝构造函数的形参不能使用值或指针传递?应聘者回答参考:在 C++ 中,拷贝构造函数的标准定义格式必须是以“const 引用”作为参数,形式如下:不能使用值传递或指针传递作为拷贝构造函数的参数类型,原因如下:值传递意味着需要拷贝参数对象,而要拷贝参数就需要调用拷贝构造函数本身;这会导致无限递归调用自身,最终造成栈溢出;编译器在语法检查阶段就会阻止这种定义,不允许使用值传递作为拷贝构造的参数类型。示意流程(错误调用链):二、为什么不能使用指针传递?虽然技术
2025-05-10 21:31:26
133
原创 指针与引用在函数传参中的使用时机
在函数参数传递时,什么情况下应该使用指针,什么情况下应该使用引用?在 C++ 中,指针和引用都可以用于函数参数传递以实现对实参的修改。但它们的适用场景和使用语义不同。选择使用指针还是引用,应根据等因素进行权衡。
2025-05-10 21:29:09
380
原创 引用与指针的区别
若变量在整个生命周期中始终绑定同一个对象,建议使用引用;若需要空状态、动态绑定或多级指向,使用指针更灵活;在接口参数传递中,推荐使用引用 + const 修饰符来提高安全性和可读性;引用简洁且类型安全,指针功能更强但风险更高。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-05-10 21:27:28
361
原创 传值、传指针、传引用的区别
请说明函数参数传值、传引用和传指针之间的区别。在 C++ 中,函数参数的传递方式主要有三种:传值、传引用和传指针。它们在形参与实参之间的联系、是否可修改实参、以及语义表达上都存在明显区别。
2025-05-10 21:26:39
240
原创 数组指针与指针数组的区别
int* p[5];[]优先级高于,表示p是一个数组;该数组有 5 个元素,每个元素是int*类型,即指向int的指针;本质:是一个包含多个指针变量的数组。
2025-05-10 21:24:56
273
原创 数组与指针的区别与联系
请说明数组与指针在 C++ 中的区别与联系。在 C++ 中,数组和指针虽然在语法上有一定相似性,但它们本质上是不同的概念,功能侧重点和内存管理方式也不同。下面从多个角度分析它们的联系与区别。
2025-05-10 21:23:55
333
原创 sizeof能作为数组长度常量吗?
你认为下面这行代码是否合法?为什么?这段代码是sizeof是一个,它的结果在编译期就已确定,可以用作数组的长度。
2025-05-10 21:23:05
154
原创 程序跳转到指定地址执行
如何让程序跳转到一个指定的内存地址(如0x100000)去执行代码?在 C/C++ 中,如果我们希望程序跳转到一个绝对地址并开始执行该地址处的指令,可以通过的方式实现。这属于底层编程常见的技巧,通常用于嵌入式开发、操作系统引导、BIOS 启动等场景。
2025-05-08 18:07:12
240
原创 栈内存与字符串常量区的区别解析
请解释栈内存与文字常量区在字符串存储中的区别,并说明以下比较结果的原因。在 C++ 中,字符串的存储位置取决于变量的声明方式。变量可以存储在栈中、堆中,也可以是指向文字常量区(只读内存)的指针。
2025-05-08 18:06:13
263
原创 数组与指针的区别
请简要说明数组与指针在 C++ 中的区别。在 C++ 中,数组与指针虽然在语法和行为上有相似之处,例如都支持下标操作(a[i]),但它们在内存管理、生命周期、类型属性等方面存在明显区别。
2025-05-08 18:02:54
291
原创 变量与零的比较
请分别写出BOOLintfloat和指针类型的变量 a 与“零”的比较语句。在 C++ 中,不同类型的变量与“零”进行比较时需要采用不同的判断方式,既要符合语义,又要避免精度或逻辑错误。
2025-05-08 18:00:44
155
原创 C++中三种内存分配方式及其区别
类型分配方式生命周期管理方式优缺点静态存储区编译时程序整个运行周期系统自动生命周期长,访问快,不够灵活栈分配函数调用时函数调用期间系统自动效率高,空间小,不可跨函数使用堆分配(动态)程序运行时手动控制(需释放)程序员负责灵活性高,易出错,推荐配合智能指针使用合理选择内存分配方式,是高效安全编程的重要基础。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-05-07 22:36:47
214
原创 main函数执行前后可能执行哪些代码?
在 C++ 程序中,main函数执行之前和之后,分别会执行哪些代码?在 C++ 中,虽然main是程序的逻辑入口点,但程序在运行时会在main执行前进行环境初始化,在main执行后进行清理回收。
2025-05-07 22:35:37
178
原创 C++ 是类型安全的语言吗?
C++ 是类型安全的语言吗?C++。虽然它在大多数情况下支持强类型检查(如禁止不同类型的变量之间直接赋值),但也允许程序员通过某些方式绕过类型系统,从而破坏类型安全。
2025-05-07 22:34:33
145
原创 C++中两种必须使用初始化列表的情况
有哪几种情况只能使用初始化列表(initialization list),而不能使用赋值(assignment)进行初始化?在 C++ 中,虽然大多数成员变量既可以使用初始化列表也可以使用构造函数体内赋值,但在以下两种情况下,,赋值将导致编译错误或语义不正确。
2025-05-07 22:33:32
215
原创 重载与重写区别
区别维度重载(overload)重写(override)作用域同一作用域内子类与父类之间参数列表必须不同必须完全相同返回值可不同,不作为区分依据必须完全相同绑定方式静态绑定(编译期确定)动态绑定(运行期确定)多态支持不支持支持,多态的基础虚函数无关必须是虚函数😀关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-05-07 22:30:44
270
原创 引用作为返回值的使用分析
请你说明将“引用”作为函数的返回值时,有哪些使用格式、好处与注意事项?并简要说明适合与不适合使用引用返回值的场景。在 C++ 中,函数返回引用(reference)的主要目的是,避免返回值拷贝,同时允许函数返回值被继续赋值。
2025-04-21 12:05:44
428
原创 引用参数的核心特点
将“引用”作为函数参数有哪些特点?与普通变量传值或指针传递相比有什么优势?在 C++ 中,将引用作为函数参数,可以兼顾效率与可读性,既避免了传值的拷贝成本,又比指针更安全、清晰。
2025-04-21 12:04:40
141
原创 常引用的作用与使用时机
只读访问函数参数时,推荐使用const T&替代按值传递,提高性能并防止修改;常引用可以绑定到临时对象、常量对象、右值对象,而普通引用不能;在所有可以使用常引用的地方,都应优先考虑加上const修饰。😀关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-04-21 12:03:49
136
原创 引用的定义与使用规则
请你解释一下什么是“引用”?在声明和使用引用时需要注意哪些问题?在 C++ 中,**引用(Reference)**是某个变量的别名(alias),通过引用对变量进行操作,与直接操作该变量本身效果完全相同。
2025-04-21 12:02:33
226
原创 类对象的分配
实现思路将构造函数或析构函数设为protected或private;禁止在外部栈上创建对象;提供一个static的工厂方法来动态分配对象;提供的销毁方法;析构函数建议用protected,以支持子类继承和释放。示例代码class A {protected:A() {} // 外部无法直接构造virtual ~A() {} // 保证派生类析构正常调用public:} // 创建对象} // 销毁自身使用方式// 只能通过 create 创建// 手动释放return 0。
2025-04-21 12:01:37
316
原创 继承关系下的类型转换
在继承关系中,C++ 是如何实现父类与子类之间的对象、引用、指针的相互转换的?这些转换能否实现多态?在 C++ 的继承体系中,子类对象可以转换为父类类型,尤其在多态场景中,这种类型转换非常常见。
2025-04-21 11:15:23
301
原创 怎么理解多态
你是如何理解 C++ 中的多态的?它的分类、实现方式和作用是什么?C++ 中的多态(Polymorphism)指的是。通俗地讲,就是。
2025-04-21 11:12:01
222
原创 虚函数与纯虚函数在多态中的应用
概念是否实现函数体是否可实例化用途虚函数是可以实现可重写接口纯虚函数否(=0)否(抽象类)作为接口占位,派生类必须重写多态根据上下文是编译期重载 or 运行期多态😀关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。
2025-04-21 11:10:24
362
C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的
2022-10-07
C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。完整源码 EasyX
2022-07-28
MFC 标签页 TabSheet.h TabSheet.cpp
2022-07-19
Inject.exe
2020-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人