- 博客(26)
- 资源 (26)
- 收藏
- 关注
原创 虚函数工作原理
虚函数通过 VTable 和 vptr 实现动态绑定,使得 C++ 能够支持多态性。它允许程序在运行时选择正确的函数,从而提供更灵活的代码结构和设计。
2024-09-26 14:13:40 167
原创 面向对象和面向过程语言的区别
面向过程和面向对象语言各有其特点和优势,面向过程适合简单和小型程序,而面向对象则在复杂系统的开发中表现更佳,提供了更好的结构和可维护性。选择哪种范式通常取决于具体的应用需求和程序复杂度。
2024-09-26 11:51:38 200
原创 malloc的底层实现
malloc的底层实现涉及内存管理、分配算法、内存块管理及系统调用等多个方面。其效率和碎片管理策略对应用程序的性能影响很大。不同的标准库实现可能有不同的细节,但大致逻辑相似。
2024-09-26 11:48:55 76
原创 C++程序的执行过程
C++ 程序的执行过程包括编写、编译、链接、加载和执行等步骤。这一过程涉及多个工具和阶段,每个阶段对最终可执行文件的生成和运行至关重要。
2024-09-26 11:44:43 54
原创 常见的设计原则
这些设计原则提供了一种结构化的方式来设计和组织代码,有助于提高代码的可维护性、可扩展性和灵活性。遵循这些原则可以有效地管理软件复杂性,降低修改引入错误的风险。
2024-09-26 11:37:34 66
原创 友元函数和友元类
友元函数和友元类提供了一种灵活的方式来控制类的访问权限,适用于需要访问私有成员的场景。合理使用可以简化代码并提高可读性,但过度使用则可能导致封装性降低。
2024-09-26 11:30:21 114
原创 几种单例模式
选择单例模式的实现方式时,需要考虑线程安全、内存使用和实例创建时机。懒汉式适合延迟加载,但需要注意线程安全,饿汉式简单且安全但可能浪费资源。C++11 的实现方式是现代 C++ 的推荐做法,提供了线程安全和简洁性。
2024-09-26 11:20:22 180
原创 内存泄漏的处理以及一些常见的内存管理技术
通过使用智能指针、RAII 原则、内存池技术、手动管理、内存检测工具等方法,可以有效处理和防止内存泄漏问题。这些技术有助于提高代码的安全性和可维护性。
2024-09-25 12:51:17 185
原创 构造函数不能声明为虚函数
构造函数不能声明为虚函数,因为在构造过程中对象的动态类型未确定,不能实现多态。这种设计确保了对象在初始化时的安全性和一致性。
2024-09-25 12:47:56 209
原创 动态链接和静态链接的区别,动态链接的原理
静态链接:在编译时将所有代码合并,生成较大的可执行文件。动态链接:在运行时加载库,节省内存和磁盘空间,但可能引入版本兼容性问题。
2024-09-25 12:43:43 138
原创 unordered_map的扩容过程
扩容过程是一个复杂但高效的过程,通过动态调整桶数量和重新分配元素,确保哈希表在多次插入操作后仍能保持良好的性能。
2024-09-25 12:39:38 190
原创 vector和list的底层原理以及对应的优缺点
vector:适合需要频繁随机访问和尾部操作的场景,但在中间插入和删除时性能较差。list:适合需要频繁插入和删除的场景,但不适合随机访问。
2024-09-25 12:34:22 160
原创 重载和重写、重定义的区别
定义通常指的是在同一作用域中,重新定义一个已经存在的函数或变量。这在 C++ 中常常被认为是一个不好的做法,因为它可能导致混淆。特征重定义并不一定是函数重载或重写,而是简单地用新的实现替代原有的实现。示例void func() { /* 实现1 */ }void func() { /* 实现2 */ } // 重定义,可能导致编译错误重载:同一作用域中函数名相同但参数不同,支持多态。重写:在派生类中重新定义基类的虚函数,提供不同的实现。重定义。
2024-09-25 12:17:54 224
原创 深拷贝和浅拷贝
浅拷贝:只复制对象的基本数据和指针,多个对象共享相同的数据。深拷贝:复制对象的所有数据,包括指针指向的实际数据,确保每个对象拥有独立的副本。
2024-09-25 12:13:23 188
原创 指针和引用的区别
指针是一个变量,存储另一个变量的地址。可以重新指向其他变量。int a = 5;// 指针指向变量 a引用是一个别名,必须在声明时初始化,不能改变引用的对象。int a = 5;// 引用 a指针:灵活性高,可以指向不同的对象,能够为nullptr,适合动态内存管理。引用:提供更安全的访问方式,不能改变引用的对象,适合用作函数参数和返回值。
2024-09-25 12:10:17 157
原创 new 和 malloc 的区别及为何需要 new/delete
虽然malloc和free在 C 语言中很常用,但 C++ 引入new和delete是为了更好地支持对象的生命周期管理、类型安全和异常处理,确保程序的安全性和可维护性。因此,在 C++ 中,建议优先使用new和delete来进行动态内存管理。
2024-09-25 12:04:53 203
原创 多态的实现原理(实现方式)以及多态的优点
多态通过虚函数和动态绑定提供了一种灵活的机制,使得代码可以处理不同类型的对象而无需具体了解它们的实现。这种特性不仅增强了代码的可读性和可维护性,还提高了程序的扩展性。
2024-09-25 11:58:13 92
原创 封装、继承和多态
封装确保数据的安全性和隐私;继承实现代码的重用和扩展;多态提供了灵活性,使得相同的接口可以对应不同的实现。这三个特性共同促进了代码的组织和可维护性,是面向对象编程的核心。
2024-09-25 11:53:27 398
原创 C++ 内存管理
智能指针提供了安全、灵活的内存管理机制,避免了手动管理内存带来的复杂性和潜在问题。如果你只需要一个独占所有权的指针,使用。如果你需要共享所有权,使用。如果你需要观察一个shared_ptr但不想增加其引用计数,使用。
2024-09-25 11:38:38 699
原创 C++ 简单实现委托
前段时间在公司实习做了电子显微镜的项目,GUI部分是用C#写的,C#中的委托(delegate)用起来实在是太爽了。委托让模块之间的关联程序大大的降低,可是说几乎能做到不关联。这让有些模块的独立性、通用性和重用能力得到大大的加强。在我的毕业设计所做的程序中,人工智能模块我就是做成了一个可以让别人也能灵活使用的单独的模块。其中有一个重要功能就是接受别人的模块所传入的回调函数,在电脑计算完毕之后
2009-05-07 14:07:00 542
C++算术表达式求值(支持函数)
2014-05-16
爱读书_ 2.799_setup.part3.rar
2011-07-11
爱读书_ 2.799_setup.part2.rar
2011-07-11
爱读书_ 2.799_setup.part1.rar
2011-07-11
简单C语言编译程序_只实现到中间代码
2011-06-28
网络对战/人机对战中国象棋
2009-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人