C++学习
C++学习日志
孜孜不倦fly
这个作者很懒,什么都没留下…
展开
-
C++11新特性
*4、空指针:**空指针从指向NULL变为指向nullptr;通过将指针初始化为 nullptr(nullptr直接代表指针空值类型),可以很好地解决 NULL 遗留(NULL可以代表一个整型)的问题。**2、auto关键字:**用于定义变量,编译器可以自动判断的类型(前提:定义一个变量时对其进行初始化);**6、右值引用和移动语义:**这两个功能都是为了让程序员有意识减少进行深拷贝操作。**1、成员变量默认初始化:**构建一个类的对象不需要用构造函数初始化成员变量。原创 2024-03-22 15:27:55 · 419 阅读 · 0 评论 -
C++ 17新特性
除了上述特性外,C++17 还引入了其他一些有用的特性,如类模板参数推导、内联变量、constexpr if、标准库的增强等。这些新特性可以提高代码的清晰度、可读性和性能,并且是 C++ 编程中不可或缺的一部分。C++17 是 C++ 语言的一个重要版本,引入了许多新特性和改进,以提高开发效率和代码质量。原创 2024-03-09 14:22:38 · 798 阅读 · 0 评论 -
C++中的static关键字
关键字的用法使得它在不同的上下文中具有不同的含义,但总体来说,它用于实现具有静态特性的变量和函数,例如在函数内部保持状态、在类中实现共享成员等。是一个关键字,用于声明静态变量、静态函数、静态类成员以及静态局部变量。关键字的作用取决于它所修饰的上下文,以下是。原创 2024-03-08 11:46:29 · 342 阅读 · 0 评论 -
C++中的volatile关键字
是一个关键字,用于告诉编译器,该变量的值可能会在未知的时刻被意外地改变,因此编译器对于该修饰的变量的操作时应该保持对该变量。关键字只能保证变量的内存可见性,并不能保证变量的原子性。关键字来告诉编译器不要对该变量进行优化,以确保中断服务程序可以正确地访问和修改变量的值。关键字来告诉编译器不要对该变量进行优化,以确保可以正确地读取和写入硬件设备的状态。关键字来告诉编译器不要对该变量进行优化,以确保每次访问都能获取变量的最新值。关键字的主要作用是告诉编译器不要对该变量进行优化,以防止出现意外的行为。原创 2024-03-08 11:25:54 · 386 阅读 · 0 评论 -
C++的4种强制类型
是用于在没有二义性的前提下进行基本数据类型转换的一种转换方式。它只能用于具有相关性的数据类型之间的转换,如将int类型转换为double类型。如果进行无关的数据类型之间的转换,编译器将报错。是一种低级的重新解释型的强制类型转换操作。它仅仅是一种逻辑上的转换,不会改变对象的二进制低级表现形式。用途:通常用于底层的编程,将指针或引用转换为一个足够长度的整型、将整型转换为指针或引用类型。用途:通常用于在没有丢失信息的情况下进行基本数据类型之间的转换。用途:通常用于将基类指针或引用安全地转换为派生类的指针或引用。原创 2024-03-06 15:26:57 · 518 阅读 · 0 评论 -
字符串、向量和数组
【代码】字符串、向量和数组。原创 2024-02-17 13:23:40 · 96 阅读 · 0 评论 -
C++左值引用、右值引用、移动语义、完美转发、深浅拷贝
移动构造函数的实现通常会“窃取”源对象的资源,并将源对象的资源指针(或其他表示资源的成员)置为空,从而确保源对象不再拥有这些资源。1.浅拷贝只复制指针或引用,将源对象的值拷贝到目标对象中去,本质上来说源对象和目标对象共用一份实体,只是所引用的变量名不同,地址其实还是相同的,因此复制后的对象共享相同的资源。2.拷贝的时候先开辟出和源对象大小一样的空间,然后将源对象里的内容拷贝到目标对象中去,这样两个指针就指向了不同的内存位置,并且里面的内容是一样的。2.右值:不可以取地址、临时要销毁的对象。原创 2024-02-17 12:40:54 · 424 阅读 · 0 评论 -
常用GDB调试命令
set var 变量名=变量值(循环用的比较多)list 行号/函数名(不加则从默认位置显示)16.向下单步调试(遇到函数体进入函数体)display/undisplay 变量名。11.设置条件断点(一般用在循环的位置)14.向下执行一行代码(不会进入函数体)enable/disable 断点编号。until 66:直接运行到第66行。3.给程序设置参数/获取设置参数。list 文件名:行号/函数名。print 变量名:打印变量值。break 行号/函数名。finish:跳出函数体。原创 2024-02-05 22:33:42 · 284 阅读 · 0 评论 -
静态库和动态库
库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数或类。静态库在程序的链接阶段被复制到程序中;动态库在程序运行时被系统动态地加载到内存中使用。2.使用ar(archive)进行打包。1.通过gcc获得.o文件。1.通过gcc获得.o文件。三、静态库和动态库的区别。原创 2024-02-05 21:52:10 · 217 阅读 · 0 评论 -
虚函数工作原理
1.当调用一个对象对应的函数时,通过对象内存中的vptr(虚函数表指针)找到。2.从虚函数表中找到调用的虚函数的指针(地址),记录着该类各个虚函数的首地址。虚函数表vtbl:虚函数。的vtbl(虚函数表)原创 2024-02-01 15:15:10 · 250 阅读 · 0 评论 -
C++编译全过程
5.链接:链接过程将多个目标文件以及所需的库文件(.so等)链接成最终的可执行文件(executable file) .out。2.预处理:将所有的#include头文件以及宏定义替换成其真正的内容(删除所有的注释、宏扩展、文件包含) .i。4.汇编:转换为二进制机器码 .o(目标文件)3.编译:转换为汇编语言 .s。1.源文件 .cpp。原创 2024-01-20 20:06:03 · 416 阅读 · 0 评论 -
C++判断传出参数和传入参数
如果参数没有被const修饰,且为引用或指针(带&或*),则通常为传出参数如果函数参数是基本类型(如int、float等)或者是const修饰的类型,则通常是传入参数最好还是要根据函数的具体实现来判断参数的作用参考博客:C++如何区分参数是入参还是出参?原创 2024-01-20 11:24:23 · 370 阅读 · 0 评论 -
C++的设计模式总结
通过指针指向一个多态对象来表达灵活性原创 2023-12-20 11:11:54 · 449 阅读 · 1 评论 -
C++中的三种继承(public, protected, private)
权限只取决于低的那个权限1.子类通过public方式继承父类,则父类中的public、protected、private属性的成员在子类中依次是 public、protected和private性,即通过public继承并不会改变父类原来的数据属性。2.子类通过protected方式继承父类,则类中的public、protected和private属性的成员在子类 中依次是 protect...原创 2023-07-14 16:32:00 · 155 阅读 · 0 评论 -
VS2022注释多行代码快捷键
选中多行后:注释: 先CTRL+K,然后CTRL+C取消注释: 先CTRL+K,然后CTRL+U原创 2023-08-11 11:12:00 · 678 阅读 · 0 评论 -
使用VS时的一些报错_1
一.使用EasyX库函数中的loadimage函数时报错:loadimage没有与参数列表匹配的重载函数解决方法:右键解决方案,点击属性,【高级】→【高级属性】右【字符集】设置成【使用多字节字符集】即可解决。二.错误 C4996 ‘strcpy’: This function or variable may be unsafe. Consider using strcpy_s instead...原创 2023-08-05 10:19:00 · 226 阅读 · 0 评论