![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 88
个人回收
这个作者很懒,什么都没留下…
展开
-
C++ 智能指针 - 全部用法详解
智能指针虽然使用起来很方便,但是要注意使用智能指针的一些陷阱,否则会造成严重的内存报错或者内存泄露等问题!原创 2023-04-24 19:18:04 · 308 阅读 · 1 评论 -
相爱相杀好基友——数组与链表
当 n 为奇数时,slow 恰好指向中间结点,当 n 为 偶数时,slow 恰好指向中间两个结点的靠前一个(可以考虑下如何使其指向后一个结点呢?当两个指针都进入环后,每轮移动使得慢指针到快指针的距离增加一,同时快指针到慢指针的距离也减少一,只要一直移动下去,快指针总会追上慢指针。然而面试的时候经常碰见诸如获取倒数第k个元素,获取中间位置的元素,判断链表是否存在环,判断环的长度等和长度与位置有关的问题。一般来讲,链表中只会有一个结点的指针域为空,该结点为尾结点,其他结点的指针域都会存储一个结点的内存地址。转载 2023-03-07 18:16:31 · 42 阅读 · 0 评论 -
C++虚继承和虚基类详解
多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。多继承时很容易产生命名冲突,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如典型的是菱形继承,如下图所示:图1:菱形继承。转载 2023-03-02 15:17:52 · 167 阅读 · 0 评论 -
智能指针的理解
一般情况下,继承了 std::enable_shared_from_this 的子类,成员变量中增加了一个指向 this 的 weak_ptr。成员函数获取 this 的 shared_ptr 的正确的做法是继承 std::enable_shared_from_this。std::weak_ptr :共享资源的观察者,需要和 std::shared_ptr 一起使用,不影响资源的生命周期。因为 shared_ptr 对象中的指针指向的对象不一定和控制块中的指针指向的对象一样。转载 2023-03-02 13:22:26 · 138 阅读 · 0 评论 -
C语言C++中assert的用法
断言语句不会永远被执行,可以屏蔽也可以启用,这就要求assert不管是在屏蔽还是启用状态下都不能对我们本身代码有所影响,这样刚才我们在代码中使用的assert(i++)就不行,因为如果禁用了assert,那i++就不能执行;根据提示我们很快就能定位到错误点,就在assert(i++)处;assert和后面的语句应该空一行,以形成逻辑和视觉上的一致性,也算是一种良好的编程习惯,让编写的代码有一种视觉上的美感;不能使用改变环境的语句,就像我们上面的代码改变了i变量,在实际编写代码的过程中是不能这样做的;原创 2023-03-02 13:02:14 · 259 阅读 · 0 评论