- 博客(722)
- 资源 (38)
- 收藏
- 关注
原创 c++总结-04-智能指针
• 线程安全:引用计数的增减是原子的(通过 std::atomic 实现),但对象本身的访问需要额外同步。• 内存占用:每个 shared_ptr 携带指向控制块的指针(通常为 16 字节)。• 不增加引用计数,但可检测资源是否有效(通过 lock() 获取临时 shared_ptr)。• 组成:引用计数、弱引用计数、删除器(Deleter)、分配器(Allocator)。• 存储成本较裸指针多了引用计数指针(和相关控制块-共享)• 接口慎用(蔓延问题)• 智能指针仅用于管理内存,不要用于管理非内存资源。
2025-05-25 23:11:37
860
原创 c++总结-03-move
第二个warp()函数调用实参是右值,根据引用折叠规则,funcMiddle()函数接收的参数类型是右值引用,那么为什么却调用了调用func()的左值版本了呢?(2)转发:从main()函数中调用funcMiddle()函数,通过funcMiddle()函数调用funcLast()函数,这就叫做转发,funcMiddle()函数被当作一个跳板函数。但是C++中不允许对引用再进行引用,对于上述情况的处理有如下的规则:所有的折叠引用最终都代表一个引用,要么是左值引用,要么是右值引用。这就是移动操作的来源。
2025-05-18 22:22:23
954
原创 C++总结01-类型相关
在C++中,临时对象(Temporary Objects)是编译器在表达式求值过程中隐式创建的、生命周期短暂的匿名对象。返回值优化(Return Value Optimization,RVO)是 C++ 编译器的一项重要优化技术,用于消除函数返回对象时的临时对象构造和复制/移动操作。在C++中,内嵌对象(作为类的成员变量)的构造和析构时机遵循特定的规则,理解这些规则对于正确管理对象生命周期非常重要。• 基本数值类型,以及auto自动推断类型声明,可以继续使用赋值初始化(除非需要避免数值窄化转型)。
2025-05-04 00:04:54
1211
原创 c++17文件系统
在编程世界中,目录操作是不可或缺的一部分。无论你开发什么你都需要与文件系统(Filesystem)进行交互。C++ Filesystem库提供了一种标准化和跨平台的方式来进行这些操作。
2024-11-09 00:46:12
419
原创 模板与泛型编程-变量模板
别名模板是c++ 11引入的,引入的目的是不但能简化书写,而且可以达到其他手段很难实现的效果,一般都是通过using实现别名模板。
2024-10-13 12:41:35
110
原创 c++11~c++20 thread_local
线程局部存储是指对象内存在线程开始后分配,线程结束时回收且每个线程有该对象自己的实例,简单地说,线程局部存储的对象都是独立各个线程的。实际上这并不是一个新鲜个概念,虽然C++一直没因在语言层面支持它,但是很早之前操作系统就有办法支持线程局部存储了。
2024-10-09 22:30:44
380
原创 c++11~c++20 内联命名空间
突然某天加入了新特性,需要升级接口。有些客户需要升级,有些客户担心稳定性,而不愿意升级,还想用原来的接口,那我们就可以用下面的方法来解决该问题。在c++11中增强了命名空间的特性,提出了内联命名空间的概念 ,内联命名空间能够把空间内的函数和类型导出到父命名空间中,这样即使不指定子命名空间也可以使用其空间内的函数和类型了。在工作,我们经常会引入第三方库,偶尔会碰到同名的函数和类型,造成编译冲突的问题。可以看到应用端无需该代码,底层库只需要改变inline的位置即可!使用新的接口(愿意更新的用户)
2024-09-28 15:46:08
395
原创 c++11~c++20 numeric_limits
在c++中应该尽量少使用宏,用模板取而代之是明知的选择。我们可以使用numeric_limits来获取最大值和最小值,例如。
2024-09-28 12:54:37
409
原创 Linux c++开发-14-IO复用
在select这种I/O多路复用机制下,我们需要把想监控的文件描述集合通过函数参数的形式告诉select,然后select会将这些文件描述符集合拷贝到内核中,我们知道数据拷贝是有性能损耗的,因此为了减少这种数据拷贝带来的性能损耗,Linux内核对集合的大小做了限制,并规定用户监控的文件描述集合不能超过1024个,同时当select返回后我们仅仅能知道有些文件描述符可以读写了,但是我们不知道是哪一个,因此程序员必须再遍历一边找到具体是哪个文件描述符可以读写了。第三个文件描述符可以读写了吗?
2023-12-25 15:38:31
677
原创 Linux c++开发-06-使用Linux API 进行文件的读写
先用open接口去打开文件,flag表示打开文件的权限不同。先简单的介绍一下open,read,write。
2023-12-17 15:07:02
417
原创 Linux解压缩
命令格式:tar -zcvf 压缩文件名.tar.gz 被压缩文件名。命令格式:tar -zxvf 压缩文件名.tar.gz。Linux下*.tar.gz文件解压缩命令。解压缩后的文件只能放在当前的目录。
2023-11-15 13:42:10
110
原创 若要对多态类进行深拷贝,应使用虚函数的clone,而不是公开的拷贝构造赋值
拷贝一个多态类可能会导致切片问题,为了解决这个问题,应覆盖一个虚clone函数,让他根据实际类型进行复制并返回一个到新对象的所有权的指针(std::unique_ptr),在派生类,通过使用所谓的协变返回类型来返回派生类型。
2023-10-18 22:35:51
231
mysql+connetcot.txt
2019-12-29
30岁的程序员如何防脱
2023-10-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人