- 博客(35)
- 收藏
- 关注
原创 左值右值,右值拷贝右值赋值,move&&forward
左值:有名字、有内存右值:没名字(临时量)、没内存无法将左值绑定到右值引用无法将右值绑定到左值引用常引用既可以绑定右值,也可以绑定左值一个右值引用变量本身是一个左值。
2024-08-26 22:22:51
288
原创 体验智能指针的强大2
转移对象的所有权,导致前对象内部指针被置为。删除左值拷贝构造函数和左值赋值运算符。增加右值拷贝构造函数和右值赋值运算符。删除了拷贝构造和赋值运算符。
2024-08-24 15:44:10
332
原创 c++八股之操作系统篇
因此,一个进程可以创建的线程数由可用虚拟内存和线程的栈的大小共同决定,只要虚拟空间足够,那么新线程的创建就会成功。在计算机中并不是原子操作,设计内存取数,计算和写入内存的几个环节,而线程的切换有可能发生在上述任何一个环节中间,所以不同的操作顺序很有可能带来意想不到的结果。这里讨论用户态的多线程模型,同一个进程内部有多个线程,所有的线程共享同一个进程的内存空间,进程中定义的全部变量会被所有的线程共享,比如全局变量。的值,而多个线程被cpu调度的顺序又是不可控的,所以对临界资源的访问尤其需要注意安全。
2024-08-13 19:24:04
406
1
原创 c++八股之网络篇
一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是TCP的拆包和粘包问题。应用程序写入数据的字节大小大于套接字发送缓冲区的大小进行MSS大小的TCP分段(MSS = TCP报文段长度-TCP首部长度)以太网的payload大于MTU进行ip分片(MTU指:一种通信协议的某一层上面所能通过的最大数据包大小)消息定长在包尾部增加回车或者空格符等特殊字符进行分割将消息分为消息头和消息尾使用其他复杂的协议,如RTMP协议等。
2024-08-13 19:22:55
922
原创 c++八股之语法篇
编译阶段define是在编译的预处理阶段起作用,const是在编译、运行时候起作用安全性define只作替换,不作类型的检查和计算,也不求解,容易产生错误。一般加括号包裹住每一个部分,不然很容易出错const常量有数据类型,编译器可以对其进行类型安全检查内存占用define只是将宏名称进行替换,在内存中会产生多份相同的备份。const在程序运行中只有一份备份,且可以执行常量折叠,能将复杂的表达式计算出结果放入常量表宏替换发生在编译阶段之前,属于文本插入替换;const作用于发生编译过程中。
2024-08-13 19:21:30
1036
原创 【基础】【面试】手写一个String的构造函数,拷贝构造,赋值运算符
【代码】【基础】【面试】手写一个String的构造函数,拷贝构造,赋值运算符。
2024-08-13 15:35:17
141
原创 数据结构基础
队列是一种先进先出(First In First Out,FIFO)的数据结构,其特点是元素的添加和删除操作分别发生在队列的两端。学习链表时,理解链表的基本概念、操作和特点非常重要,这有助于更好地理解和设计其他复杂的数据结构和算法。学习队列时,理解队列的基本概念、操作和应用场景非常重要,这有助于更好地理解和设计其他数据结构和算法。学习栈时,理解栈的基本概念、操作和应用场景非常重要,这有助于更好地理解和设计其他数据结构和算法。学习数组时,重要的是理解数组的基本概念、操作和特点,并能够在编程中灵活运用。
2024-04-02 10:37:39
580
原创 设计模式详解
抽象工厂模式提供了一种创建一系列相关或依赖对象的方法,而无需指定它们具体的类。它通过引入抽象工厂接口和具体工厂实现类的方式,将一组相关的对象创建集中在一起,使得客户端代码可以在不同的工厂实现之间切换,而不必修改其余代码。
2024-04-01 10:17:38
923
原创 c++新特性
左值基本上是具有存储属性的对象,其具有地址和值,可以出现在的左右两边右值基本上是临时对象,如字面量与表达式,大部分情况下只能出现在的右边,不能被赋值左值引用,如,只能接受左值,除非加上const右值引用,如,只能接受右值// 返回值为int&类型,是左值引用,所以只能返回左值,即必须是具有存储空间,不能是临时变量// 接受的参数为string&类型,是左值引用,所以接受的参数也必须是左值,直接Print("Hmxs")会报错int main()Print(s);
2024-03-23 15:47:49
686
原创 c++11 多线程编程
C++11提供了一个强大的线程库,即std::thread。它可以在C++程序中创建和管理线程,提供了一种更加现代化的方式来处理多线程编程。在本文中,我们介绍了std::thread库的基本使用,包括如何创建、启动和管理线程,以及如何等待线程完成和分离线程。同时,我们也提到了一些常见的错误,需要注意避免。传递临时变量的问题++x;int main()// 传递临时变量t.join();return 0;在这个例子中,我们定义了一个名为foo的函数,它接受一个整数引用作为参数,并将该引用加1。
2024-03-19 14:30:08
1107
原创 STL库和常用容器使用
STL(Standard Template Library,标准模板库)是C++标准库的一部分,提供了丰富的通用模板类和函数,用于实现常见的数据结构和算法。STL的设计目标是提供高效、通用、可复用的数据结构和算法,以及一致的接口和编程风格,使得C++程序员能够更加方便地编写高质量的代码。:容器是用于存储和组织数据的类模板,提供了多种数据结构,如向量、列表、映射、集合等。容器可以存储任意类型的数据,并提供了丰富的操作接口,如插入、删除、访问等。
2024-03-13 16:36:24
784
原创 C++快速入门
在C++中,函数定义和调用与C语言有许多相似之处,但也有一些特定的C++语法和特性。在C++中,函数定义通常包括函数名、参数列表、函数体和返回类型。C++函数的定义可以在类中定义(成员函数)或在全局范围内定义。// 函数定义示例在调用函数之前,需要提供函数的声明,以告诉编译器该函数的存在,声明包括函数名、参数列表和返回类型。// 函数声明示例在C++中,函数调用与C语言类似,使用函数名和参数列表调用函数。// 函数调用示例。
2024-03-13 10:42:33
584
原创 C语言基础笔记
在C语言中,宏定义是一种预处理指令,用于在程序代码中定义常量、函数、条件编译等。宏定义由#define关键字开头,后面跟着宏名称和宏的替换文本。当程序中出现宏名称时,预处理器会将其替换为宏的替换文本。可以使用宏定义来定义常量,方便在程序中使用。#define PI3.14159100可以使用宏定义来定义简单的函数,它们在编译时进行文本替换。
2024-03-12 15:42:09
784
原创 MarkDown快速入门
MarkDown语法(typora)1、代码块//代码块语法```java ```c++2、标题# 一号标题## 二号标题### 三号标题#### 四号标题##### 五号标题###### 六号标题3、字体// 加粗**你好,世界**// 代码高亮显示==Hello,World!==// 删除线~~被删除的文字~~// 斜体*斜体*// 下划线<u>内容</u>4、引用//引用语法>作者>&g
2022-04-21 17:05:36
256
原创 数据结构课程设计(基于AVL树的身份证管理系统)
题目十六 基于二叉排序树的身份证信息管理系统问题描述:建立身份证信息管理系统,能够进行身份证信息的录入、查找,保存,要求考虑查找效率,用二叉排序树存储信息。具体功能有:(1)能够进行身份证号码及相关信息的录入,相关信息包括姓名、地址和手机号;(2)能够快速进行身份证号码的查询,并输出相关信息;(3)可以修改身份证号码对应的其他信息,如姓名、地址;(4)可以完成身份证信息的删...
2019-12-24 20:26:00
5387
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人