- 博客(9)
- 收藏
- 关注
原创 C++学习笔记-8-Cherno系列视频
一种工具,可以检查代码是否有错误,这种预测是那种相对人性化的预测,可以一定程度帮助检查代码。其可以帮助自动化,确保代码在所有平台和所有配置下都可以编译。正确答案:这是未定义的,C++17说了这两件事不能同时做。调用移动构造函数后,之前的指针(或者说对象?Jenkins:一个免费且开源的持续集成环境。88.C++的参数计算顺序。86.C++持续集成。87.C++静态分析。89.C++移动语义。以下代码来自博客园。
2025-06-02 18:16:42
228
原创 C++学习笔记-6-Cherno系列视频
variant和union的区别:variant把所有可能的类型都进行单独存放(大小:4+28),而union只会分配其中最大的类型的大小(大小:max(4,28))。注意,这种只能在C++17及以上才可以用。提供了一种if else的感觉,用于处理可能存在也可能不存在的数据,比如文件读取。,可以减少内存分配,比如需要某个string中的一部分,并print出来,就可以用string_view。注意,这种只能在C++17及以上才可以用。注意,这种只能在C++17及以上才可以用。具体如何设置在视频中有讲解。
2025-05-30 18:26:29
167
原创 C++学习笔记-5-Cherno系列视频
在c中没有namespace,一般库里面的函数会将库名作为前缀,再加实际的函数名(例如GLFW库中的Init()函数,就是glfwInit,其他也类似),这么做可以使得能够同时使用多个库,即便库中可能有同样的Init函数(因为实际上的函数名有前缀,所以可以区分)C++中有namesapce,其主要目的就是避免命名冲突。
2025-05-29 18:37:49
333
原创 C++学习笔记-4-Cherno系列视频
在栈上创建的变量会统一保存在内存中的一块区域,栈指针会随着变量的增多而移动,第一个创建的对象所处的内存地址一般会在较大的内存地址中,后续的地址都随着所需的内存大小而随着栈指针移动(比如int需要4bytes,栈指针就移动4bytes,当然可能中间会有内存守卫,帮助变量不访问到超出的部分)这里对Debug模式预先定义了一个PR_DEBUG,代表如果在debug模式下,使用如下的宏,而不在debug模式下,就使用另一个。注意实例化时,默认的template需要从前往后定义,即不能不定义前面的,光定义后面的。
2025-05-28 19:06:27
1409
原创 C++学习笔记-3-Cherno系列视频
原因在于,第一次pb(push_back)时,会在main函数的栈上创建一次vertex,然后copy到vertices中(1次),第二次pb时,由于vertices初始容量为1,需要先扩容到2,再复制,而扩容需要把前面的复制到新内存地址(2次),第三次同理(3次)。unique_ptr是想要一个作用域指针时的唯一选择,这个是不能复制的(原因在于,若是复制了,则两个指针指向同一个内存地址,若其中一个消失了,会释放那部分内存,以至于另一个指针出现不可预料的错误)(比如下面的复制,为什么会复制?
2025-05-27 23:02:29
1694
原创 C++学习笔记-2-Cherno系列视频
若不使用初始化列表,而在构造函数体内进行赋值,对于某些成员(尤其是对象类型成员),会先调用默认构造函数进行初始化,随后再调用赋值运算符进行赋值,这无疑增加了额外的开销。,如果有进行修改操作,在设置成release模式后,在编译后,汇编语句会创建一个对应相同名字的变量(即name)来进行赋值操作(即将Cherno赋给name变量,再对name变量进行修改),而不是对原指针进行操作。当想给函数传递字符串,并确保不会在函数内改变其时,确保使用常数引用,原因在于,若不使用,会导致复制操作,而复制操作会降低性能。
2025-05-26 21:21:55
1629
原创 C++学习笔记-Cherno系列视频
0层有纯虚函数,1层若是实现此函数了,2层由于继承自1层,也会自动实现,但注意,若2层中不重新override实现,则可能使用过程中会使用1层的函数。如果使用public继承,父类的private中的成员也会被子类继承,但是注意:子类不会有显示,且子类不能访问被继承的成员。关于找是汇编错误还是链接错误,在output中,如果C开头是汇编错误,如果是LNK开头,是链接错误。类内:该变量将与类的所有实例共享内存,顺带一提,声明的变量不属于类的实例的大小,可以理解为就属于类。注意,若不设置初始值,A = 0。
2025-05-25 21:10:52
519
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅