c++基础
m0_49024067
这个作者很懒,什么都没留下…
展开
-
c++基础:37.单例模式
这是常规方式,每次使用都需要调用GetInstance()函数。这里可以使用另一种方法。原创 2024-08-13 23:25:31 · 453 阅读 · 0 评论 -
c++基础:36.单个变量存储任意类型数据(c++17)
【代码】c++基础:36.单个变量存储任意类型数据(c++17)原创 2024-08-07 17:28:20 · 99 阅读 · 0 评论 -
c++基础:35.单一变量存储多种类型数据(c++17)
【代码】c++基础:35.单一变量存储多种类型数据(c++17)原创 2024-08-07 17:15:14 · 96 阅读 · 0 评论 -
c++基础:34. optional(c++17)
std::optional 提供了一种方式来表示可能不存在的值,避免了使用空指针的问题,并提供了更好的类型安全性。原创 2024-08-06 18:25:35 · 89 阅读 · 0 评论 -
c++基础:33.结构化绑定(c++17)
【代码】c++基础:33.结构化绑定(c++17)原创 2024-08-06 17:54:22 · 230 阅读 · 0 评论 -
c++基础:32.预编译头文件
作用:抓取一堆头文件,将它们转化为编译器可以使用的格式,而不用重复读取这些头文件,这些代码只编译一次。右键pch.cpp 属性,选择创建,点击应用。编译项目,可以发现编译时间大量减少。右键项目属性,选择使用,点击应用。原创 2024-08-04 19:05:51 · 112 阅读 · 0 评论 -
c++基础:28.计时
【代码】c++基础:28.计时。原创 2024-07-23 17:27:22 · 123 阅读 · 0 评论 -
c++基础:27.线程(简单)
join()是告诉主线程等待子线程执行完毕后继续执行主线程。原创 2024-07-23 17:02:22 · 217 阅读 · 0 评论 -
c++基础:26.命名空间
【代码】c++基础:26.命名空间。原创 2024-07-22 16:36:11 · 89 阅读 · 0 评论 -
c++基础:25.函数指针和lambda
lambda本质上是定义匿名函数的方式。匿名函数–顾名思义,没有名字的函数。[]表示捕获方式,控制如何传入传出参数。[&] 表示引用传递外部所有变量。[=]表示值传递外部所有变量。[&b]表示传递b变量。原创 2024-07-19 21:38:21 · 201 阅读 · 0 评论 -
c++基础:24.std::array标准数组
arr<int,5>:第一个参数为数组类型,第二个为数组大小。2.没有性能损失,有普通c数组一样。原创 2024-07-19 20:39:28 · 154 阅读 · 0 评论 -
c++基础:23.宏
预处理阶段,会处理所有的预处理命令。原创 2024-07-17 16:09:41 · 164 阅读 · 0 评论 -
c++基础:22.栈和堆
在栈中分配变量时,栈指针(栈顶部的指针)移动相应变量大小的字节,分配int就移动4个字节。栈中分配的内存是连续的。使用new实际上调用了malloc函数,在堆上分配内存,内存是不连续的。通常是一个预定义大小的内存区域,一般为2兆字节。原创 2024-07-17 15:12:26 · 191 阅读 · 0 评论 -
c++基础:21.模板
这并不是一个定义好的函数,只有调用这个函数的时候,例如:Print(6);这时这个具体的函数才被创建,并作为源代码编译。如果没有调用模板函数,那么这个函数就不会被创建和编译。原创 2024-07-16 22:50:32 · 116 阅读 · 0 评论 -
c++基础:20.tuple(元组)和pair
【代码】c++基础:20.tuple(元组)和pair。原创 2024-07-16 22:18:31 · 222 阅读 · 0 评论 -
c++基础:19.静态库与动态库
静态链接是在编译时发生的,编译静态库时,将库链接到可执行文件中。静态库就存在于可执行文件中。动态链接是在运行时发生的,当可执行文件运行时,才会加载动态库。原创 2024-07-14 22:13:15 · 79 阅读 · 0 评论 -
c++基础:18.vector
我们通过断点的方式发现,在main()函数运行第二行后发生了第一次拷贝,运行第三行后又发生了两次拷贝,运行第四行后又发生了三次拷贝。这是vector进行了三次扩容。为什么还有三次拷贝,这是因为我们先通过构造函数Demo(1,2)构造了一个对象,然后复制到vector中的。vector会重新分配新的内存,分配一块新内存,将旧内存中数据复制到新内存,然后释放旧内存。emplace_back(),会根据传入的参数直接构造一个给定类型的对象。1.预估大小,避免扩容。原创 2024-07-14 21:16:20 · 216 阅读 · 0 评论 -
c++基础:17.智能指针
不控制所指对象的生存期,指向由一个shared_ptr所管理的对象,将weak_ptr绑定到一个shared_ptr不会改变shared_ptr引用计数,当最后一个指向对象的shared_ptr被销毁,对象会被释放。共享智能指针,多个shared_ptr可以指向同一个对象。当指向一个对象的最后一个shared_ptr被销毁时,shared_ptr类会通过析构函数自动销毁此对象。某个时刻只能有一个unique_ptr指向一个给定对象,当unique_ptr被销毁时,它所指对象也被销毁。原创 2024-07-12 16:23:53 · 181 阅读 · 0 评论 -
c++基础:16.运算符重载
【代码】c++基础:16.运算符重载。原创 2024-07-12 15:11:54 · 126 阅读 · 0 评论 -
c++基础:16隐式转换与explicit
b可以正常初始化,a不可以。因为这条语句做了两次隐式类型转换,一次是const char *转为string,再一次是string转为Demo。原创 2024-07-11 23:55:20 · 213 阅读 · 0 评论 -
c++基础:16.三元运算符
i>n,result = i,否则result=n。三元运算符可以简化代码。原创 2024-07-11 17:55:24 · 118 阅读 · 0 评论 -
c++基础:15.const与mutable
编译是不会通过的,因为常量引用表示不会修改引用对象,而GetX()不是常函数,所以是可以修改对象的,所以必修要在函数名后面加const。在方法名后面加const,表示不会修改这个类中的任何东西。mutable修饰的变量,可以在常函数中修改。const与常量引用。原创 2024-07-11 17:22:16 · 112 阅读 · 0 评论 -
c++基础:14.string
c++中字符是char数据类型的,字符串是字符组成的数组。原创 2024-06-29 21:47:10 · 190 阅读 · 0 评论 -
c++基础:13.数组
下标法访问第n个元素,就是访问相对于首地址的 n*sizeof(int)的地址偏移。一维数组代表一组同类型数据的集合。数组中内存是连续的。原创 2024-06-29 15:29:59 · 228 阅读 · 0 评论 -
c++基础:12.虚函数
基类中想要声明为虚函数的,要在前面加vitual,派生类中,重写的虚函数要在函数后加override关键字,override可以省略,建议添加有助于阅读。People类只有一个纯虚函数,可以将People类称为接口类,接口类不能实例化对象。派生类Student必须实现基类中的纯虚函数,否则也不能实例化对象。因为在类中正常声明的函数或方法,当调用这个方法的时候,总会去调用属于这个类型的方法。纯虚函数允许在基类中定义一个没有实现的函数,强制在基类中进行实现。原创 2024-06-28 16:15:41 · 187 阅读 · 0 评论 -
c++基础:11.继承
派生类拥有基类的所有东西,并实现了新的方法。原创 2024-06-26 18:04:57 · 157 阅读 · 0 评论 -
c++基础:10析构函数
对象销毁时,调用析构函数。原创 2024-06-26 17:47:50 · 180 阅读 · 0 评论 -
c++基础:9.构造函数&拷贝构造函数
报错1:在声明了含参数构造函数后,默认构造函数不会生成,除非显式声明。原创 2024-06-23 18:46:57 · 229 阅读 · 0 评论 -
c++基础:8.枚举
Leve 不是命名空间,这个枚举存在与Demo中,所以要使用Demo::ERROR。A默认值是0,B默认值1,C默认值2,以此类推。枚举就是某一组值的集合,枚举值是一个整数。原创 2024-06-23 18:19:05 · 111 阅读 · 0 评论 -
c++基础:7.类与static
类内部使用static,表示这部分内存是这个类的所有实例所共享的。也就是不管实例化多少类对象,static修饰的变量只有一个实例。build是不通过的,因为链接的时候会发现test.cpp和demo.cpp这两个编译单元都有fun这个函数。类外使用static修饰的符号,在链接(link)阶段是局部的,只对定义它的编译单元(.obj)可见。static修饰的变量或方法,链接器不会在这个编译单元(cpp)外找它的定义。1.所有类的实例对象,共享static修饰的变量。2.静态方法不能访问非静态变量。原创 2024-06-23 17:47:48 · 408 阅读 · 0 评论 -
c++基础:6.引用
【代码】c++基础:6.引用。原创 2024-06-21 18:59:20 · 211 阅读 · 0 评论 -
c++基础:5.指针及其操作(待补充)
指针就是一个整数,存放一个内存地址原创 2024-06-21 16:29:36 · 96 阅读 · 0 评论 -
c++基础:4.头文件
防止把一个头文件多次include到一个cpp中。原创 2024-06-21 14:42:39 · 209 阅读 · 0 评论 -
c++基础:3.了解链接器的工作
理解编译和链接的过程,不要重复定义符号。原创 2024-06-20 17:53:21 · 170 阅读 · 0 评论 -
c++基础:2.了解编译器的工作
然后按ctrl+F7编译demo.cpp,可以在debug目录中看到生成的demo.i文件。图示编译成功,证明,最后一段代码 #inldue"test.h"相当于“}”每个cpp文件都是一个编译单元,都会被编译器编译成一个obj。打开iostream文件,读取内容,复制到demo文件中。然后去main函数所在的cpp文件中,实现如下代码。这个文件中只有一个"{"如果对预处理命令进行设置。打开看到,}插入进来了。原创 2024-06-20 16:53:23 · 602 阅读 · 0 评论 -
c++基础:1.预处理指令(#include)
c++基础原创 2024-06-20 15:36:29 · 183 阅读 · 0 评论