C++
文章平均质量分 84
小瓜皮在学习
不定时分享学习内容的笔记(编程相关的内容)
展开
-
C++设计模式——单例模式
单例模式(Singleton Pattern)是一种设计模式,确保一个类只有一个实例,并提供全局访问点。单例模式常用于需要共享资源(如数据库连接、日志系统)或者需要确保只有一个实例的场景。饿汉模式和懒汉模式是单例模式的两种实现方式。饿汉模式:单例实例在类加载时就创建,无论后续是否使用该实例。懒汉模式:单例实例在第一次使用时才创建。注:类加载机制在 C++ 或 Java 中,类加载时静态成员变量会被分配内存并初始化。因此,在饿汉模式中,单例对象作为类的静态成员变量,在类加载时创建,保证只有一个实例。原创 2024-09-30 10:35:51 · 675 阅读 · 0 评论 -
C++数据结构之Hash table(哈希表|散列表)
哈希表(Hash Table),也称为散列表(思考:vs平衡二叉树),是一种数据结构,它提供了通过键(key)直接访问存储的值(value)的能力。哈希表的工作原理基于哈希函数(Hash Function),该函数将输入的键映射到表中的一个位置,使得和操作都能在接近常数时间内完成(原创 2024-05-28 21:05:06 · 2432 阅读 · 0 评论 -
C++中定义和声明的区别
定义则是声明的具体化,它为变量分配存储空间或为函数生成可执行代码。静态数据成员的定义):这里不仅再次提到的名字和类型,而且分配了实际的内存空间,并初始化为0。这个步骤是必要的,因为静态数据成员在全局作用域中具有唯一的存储位置,而不仅仅局限于类的每个实例。这个定义通常放在类定义之外的.cpp文件中,以避免多次定义的问题。静态成员函数的定义void MyClass::staticFunction() { /* 函数实现 */ }):这是的实际实现,它提供了函数体,即执行的代码。原创 2024-05-23 10:24:26 · 1104 阅读 · 1 评论 -
C++智能指针(shared_ptr&&unique_ptr&&weak_ptr)
循环引用问题通常发生在两个或更多的对象相互持有对方的智能指针,形成一个闭环,导致即使所有外部引用都消失,这些对象的引用计数也无法降为0,进而无法自动释放内存。内部维护一个引用计数,每次拷贝构造或赋值增加计数,对象被销毁时减少计数,计数归零时自动释放内存。实例,同时增加对象的引用计数,从而确保在接下来的使用过程中对象不会被意外释放。访问对象,就有可能遇到悬挂引用的问题,即引用指向的内存已经被释放。离开作用域或被重置时,对象会被自动删除,实现自动资源管理。管理的对象时,必须确保该对象仍然有效,即没有被销毁。原创 2024-05-21 14:15:24 · 589 阅读 · 1 评论 -
默认拷贝构造函数,自定义拷贝构造函数,对象赋值
public:// 自定义构造函数++i) {// 自定义拷贝构造函数++i) {// 深拷贝数据// 析构函数,释放动态分配的内存private:int *data;// 指向动态分配数组的指针// 数组的大小++i) {// 创建原始对象// 使用自定义拷贝构造函数创建副本// 显示副本的内容return 0;在这个例子中,类有一个指向动态分配数组的指针。原创 2024-05-16 15:12:27 · 1790 阅读 · 0 评论 -
C++中,如何使用普通变量(包括内置变量,自定义变量(结构体和类等)、指针变量(指向对应类型的变量)和动态申请内存(申请不同类型的变量)
总结来说,如果数据大小和生命周期可以在编译时确定且不需要额外灵活性,则使用普通变量;如果需要间接访问对象或需要更加灵活的设计,则使用指针;如果需要在运行时决定内存大小或要求生命周期超越局部作用域,则需要动态申请内存。同时,现代C++编程中鼓励使用智能指针(如等)来管理动态分配的内存,以减少内存泄漏的风险。原创 2024-04-25 11:14:31 · 473 阅读 · 1 评论