C++
文章平均质量分 82
C++的基础知识和一些有趣的东西
叫我小秦就好了
这个作者很懒,什么都没留下…
展开
-
enable_shared_from_this 实现原理
enable_shared_from_this 可以帮助我们用 this 指针安全地创建 shared_ptr。原创 2024-05-15 21:10:57 · 423 阅读 · 0 评论 -
shared_ptr 引用计数相关问题
智能指针是 C++11 增加的非常重要的特性,并且也是面试的高频考点,本文主要解释以下几个问题:- 引用计数是怎么共享的、怎么解决并发问题的- 资源释放时,控制块的内存释放吗- weak_ptr 怎么判断对象是否已经释放原创 2024-05-11 20:29:43 · 727 阅读 · 0 评论 -
C++ 实现单例模式
单例模式确保一个类只有一个实例,并提供一个全局访问点。单例模式是一个比较常见的设计模式,但使用 C++ 实现会有一些意想不到的坑,文章最后给出了推荐的实现方式。原创 2024-01-30 21:11:15 · 1384 阅读 · 4 评论 -
shared_ptr 模拟实现
shared_ptr 这种智能指针访问对象采用共享所有权来管理其生存期。没有哪个特定的 shared_ptr 拥有该对象。取而代之的是,所有指涉到它的 shared_ptr 共同协作,确保在不再需要该对象的时刻将其析构。原创 2023-12-04 08:45:32 · 435 阅读 · 0 评论 -
静态链接库顺序问题
最近遇到了一个非常奇怪的问题,编译时竟因为链接库的顺序不同,就有完全不同的结果。这些东西都是在 muduo_base 中定义的,我明明链接的 muduo_base 库,为什么会有这些报错呢?当我改变链接库的顺序时,神奇的一幕出现了。编译成功了,运行程序也得到了我想要的结果。这究竟是为什么呢?下面就来为你解答这一迷题。原创 2023-05-30 10:00:00 · 730 阅读 · 0 评论 -
虚函数经典问题
由此得出了虚表指针的构造时机:在 base class constructors 调用操作之后,但是在程序员供应的代码或是 member initialization ilst 中所列的 members 初始化操作之前。原创 2023-05-16 08:20:40 · 307 阅读 · 0 评论 -
编译器的过度优化
编译器在进行优化的时候,可能为了效率而交换不相关的两条相邻指令的执行顺序。也就是指令重排,这也就引发了一些问题,下面就带大家看两个经典的问题。原创 2023-04-21 09:26:38 · 458 阅读 · 0 评论 -
虚函数表存储位置
先说结论:虚函数表存储在可执行目标文件的只读数据段、虚函数存储在代码段、虚表指针的存储的位置与对象存储的位置相同。原创 2023-04-05 10:00:00 · 3697 阅读 · 2 评论 -
sort 的 comp 为什么要求严格弱序
在使用 STL 提供的 sort 时,默认提供的排序方式可能不满足我们的需求,sort 也支持用户指定一个彷函数作为排序标准。有时,明明只是多了个等号又为什么错了呢?本文就带你解决这个疑惑。原创 2023-03-18 10:00:00 · 777 阅读 · 1 评论 -
继承下的缺省参数值和访问说明符
本文将介绍 C++ 继承体系下,函数缺省参数的绑定和函数访问说明符的绑定。这些奇怪的问题实际上不应在我们的代码中出现,但它们能帮助我们理解 C++ 的动态绑定和静态绑定,也能帮助我们更好的通过面试。原创 2023-03-06 10:00:00 · 1131 阅读 · 0 评论 -
SGI 空间配置器
空间配置器是 STL 六大组件之一,它总是隐藏在容器的背后,默默工作,默默付出。本文为《STL 源码剖析》读书笔记,主要讨论 SGI 版本空间的配置和释放,对代码进行解读时会改变一些写法,使其更易于阅读。原创 2023-02-24 10:00:00 · 1683 阅读 · 0 评论 -
C++ 基础
本文介绍一些 C++ 中基础的入门知识,主要包含函数的缺省参数、函数重载、引用、内敛函数以及 const 的知识。原创 2023-02-12 14:10:39 · 682 阅读 · 2 评论 -
STL 迭代器萃取
迭代器是一种抽象的设计概念,《Design Patterns》一书中对于 iterator 模式的定义如下:提供一种方法,使之能够依序巡访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。原创 2022-11-30 12:03:09 · 903 阅读 · 0 评论 -
new 和 delete 为什么要匹配使用
关于 new 和 delete 的使用相信大家并不陌生,可是为什么使用 new 的时候要用 delete,使用 new[ ] 的时候又要用 delete[ ]。使用 delete 释放 new[ ] 申请的内存又会发生什么?为什么有时不匹配不会报错,有时又会报错呢?原创 2022-10-14 07:30:00 · 1451 阅读 · 2 评论 -
typename 的用法
在模板声明的模板参数列表中,typename 可以用来替换 class 声明模板参数类型。在模板的声明或定义中,typename 可以用来声明从属名称是一种类型。原创 2022-09-25 14:08:30 · 2190 阅读 · 2 评论 -
operator= 中自我赋值和异常安全问题
我们在类中重载赋值运算符时会出现自我赋值和异常安全的问题,下面就来逐步解决这两个问题。原创 2022-07-18 09:30:06 · 299 阅读 · 1 评论 -
虚析构和纯虚析构
本文将介绍为什么要将多态性质基类的析构函数声明为虚函数,以及什么是纯虚析构函数。原创 2022-06-26 10:30:14 · 690 阅读 · 2 评论 -
C++ 生成随机浮点数
在 C++11 之前,我们通常采用 rand() 来生成随机数。但 rand() 对一些情况显得难以处理:1. 不同范围的随机数2. 需要随机浮点数3. 需要非均匀分布的随机数原创 2022-04-14 11:03:25 · 10995 阅读 · 2 评论 -
const 常量和 const 引用
文章对引用和指针的区别,const 引用初始化的特殊性,C++ 中的 const 修饰变量展开介绍。里面一定有你意想不到的知识。原创 2022-04-03 10:46:28 · 2445 阅读 · 1 评论 -
C++ 类和对象详解
文章介绍类的基本内容,并对this 指针、默认成员函数、赋值运算符重载、const 成员和 static 成员展开重点讲解。原创 2022-03-26 21:31:59 · 2333 阅读 · 1 评论