C++未分类
比较杂乱的一些C++笔记
巨龙之路
计算机专业学生,主攻C++、Linux、网络编程和Qt。我认为写博客可以给个人、社会和世界带来价值。因为其他人的博客给我带来了帮助,所以我也传承他们的分享精神来写博客。不忘初心,牢记使命,时刻秉持“人人为我,我为人人”的开源精神。
展开
-
什么是ar.exe?
常见的用法包括将多个目标文件打包成一个静态库文件,或者从静态库中提取特定的目标文件。在编译大型项目时,静态库的使用有助于减少可执行文件的大小,同时提供了代码重用的便利性。是一个用于创建、修改以及提取静态库(archive)文件的工具。静态库是一种包含已编译目标文件的归档文件,通常用于代码的静态链接。工具通常与 C/C++ 编译器一起使用,用于创建和管理静态库文件。工具还可以用于提取静态库中的目标文件,以供其他用途使用。这些目标文件添加到静态库中。的静态库,其中包含了。除了创建和修改静态库,原创 2024-04-28 10:32:38 · 1087 阅读 · 0 评论 -
addr2line.exe
是一个用于将程序地址转换为文件名和行号的工具。通常情况下,当程序出现崩溃或者错误时,系统会生成一个包含程序崩溃点地址的错误报告。可以帮助开发人员根据这个地址定位到源代码中的具体位置,从而更好地理解和解决问题。它在调试和分析崩溃或错误报告时非常有用。原创 2024-04-28 10:30:40 · 210 阅读 · 0 评论 -
什么是Clang-Tidy
Clang-Tidy可以检查C++代码中的各种问题,包括但不限于内存泄漏、未初始化的变量、潜在的并发问题、不安全的类型转换、代码重复、不规范的命名和格式等。通过在开发过程中集成Clang-Tidy,开发团队可以及早发现和修复代码中的问题,提高代码质量、可维护性和安全性。它基于Clang编译器,可以帮助开发者发现代码中的潜在问题、不规范的编码风格以及可能的优化机会。总之,Clang-Tidy是一个强大的工具,可以帮助开发者编写更加健壮、高效和规范的C++代码。2024年4月4日,周四上午。原创 2024-04-04 08:53:10 · 489 阅读 · 0 评论 -
到底什么是typedef
typedef是 C 和 C++ 语言中的一个关键字,用于为已有的数据类型定义一个新的别名。它的作用是提高代码的可读性、可维护性和可移植性,同时简化复杂的类型声明。typedef。原创 2024-03-22 16:28:36 · 367 阅读 · 0 评论 -
【C++】最少知识原则
最少知识原则(Least Knowledge Principle),也被称为迪米特法则(Law of Demeter),是面向对象设计中的一条重要原则。它要求在设计中,对象之间的耦合应该尽量减少,每个对象只应该与其直接的朋友进行交互,而不应该了解其他对象的细节。要求一个对象应该对其他对象有尽可能少的了解,避免直接调用其他对象的方法。这有助于减少对象之间的耦合度,提高系统的灵活性。原创 2024-01-19 09:49:29 · 511 阅读 · 0 评论 -
一个优秀的集成了C/C++编辑器和编译器的在线网站
不仅可以选择多种编译器,功能丰富多样,2023年12月20日,周三下午。而且在国内访问也很流畅。原创 2023-12-20 13:40:49 · 339 阅读 · 0 评论 -
什么是Catch2
它提供了一种方便、灵活和可靠的方式来编写和运行C++代码的测试,帮助开发人员提高代码质量和稳定性。表达性断言:Catch2提供了丰富的断言宏和断言表达式,使开发人员能够清晰、灵活地编写断言,以验证程序的行为和输出。它是C++社区中最受欢迎的测试框架之一,被广泛用于单元测试和集成测试。兼容性和跨平台:Catch2与主流的编译器和操作系统兼容,并支持多种测试目标,包括单元测试、集成测试和端到端测试。简单易用:Catch2的设计目标之一是提供简单易用的接口和语法,使开发人员能够快速编写测试用例和断言。原创 2023-12-19 18:55:15 · 390 阅读 · 0 评论 -
C++中的接口有什么用
2023年12月13日,周三上午今天上午在适配器模式,我发现如果想真正理解适配器模式,就必须学会使用C++中的接口,就必须明白为什么要在C++中使用接口,所以重新学习了一下C++中的接口。原创 2023-12-13 09:46:30 · 535 阅读 · 0 评论 -
【C++】使用“/**/“进行注释的好处
我今天下午看Google Chrome的源码时,才发现"/**/"原来还能这么用。使用"/**/"的好处就是,可以在任何地方进行注释,哪怕是参数列表。2023年12月10日,周日晚上。原创 2023-12-10 14:39:21 · 61 阅读 · 0 评论 -
我的C++注释风格
对于下列位置,则单行注释使用"//",多行注释使用"/**/"对于下列的位置,统一使用Doxygen风格进行注释。2023年12月10日,周日下午。原创 2023-12-10 14:23:53 · 49 阅读 · 0 评论 -
【C++】在类外部定义成员函数时,不需要再次使用 override 关键字
2023年12月10日,周日下午。原创 2023-12-10 13:36:01 · 100 阅读 · 0 评论 -
【C++】在类外部定义成员函数时,不应该再次指定默认参数值
2023年12月10日,周日下午。原创 2023-12-10 13:30:21 · 66 阅读 · 0 评论 -
【C++】如何优雅地把二维数组初始化为0
2023年12月7日,周四上午。原创 2023-12-07 09:05:49 · 2228 阅读 · 0 评论 -
C++断言assert
宏会输出一条错误消息并终止程序。错误消息通常包含有关断言失败的信息,例如失败的文件和行号。宏通常用于调试期间,可以帮助程序员在开发过程中快速发现问题。是一个宏定义,用于在程序运行期间检查一些条件是否满足。的值为 0,不满足条件。这将导致程序终止并输出错误消息。如果想在断言发送时输出错误信息,可以这么写。宏,以便在生产环境中提高程序的性能。会终止程序并输出一条错误消息。2023年12月6日,周三上午。是一个布尔表达式,如果。的值为假(即 0),则。原创 2023-12-06 10:07:41 · 189 阅读 · 1 评论 -
原来在C++的类中声明函数时可以不写参数名只写参数类型
在C++的类中声明函数时可以不写参数名只写参数类型,2023年12月6日,周三上午。但是,在实现时必须写出参数名。今天才发现原来可以这样写。原创 2023-12-06 09:36:34 · 683 阅读 · 0 评论 -
用C++标准库生成制定范围内的整数随机数
修改dis的范围就可以设置指定的范围。2023年11月22日,周三上午。原创 2023-11-22 08:16:41 · 64 阅读 · 0 评论 -
std::minus
std::minus是 C++ 标准库中的一个函数对象类模板,位于头文件中。它提供了一个可调用对象,用于执行减法操作。函数对象类模板被设计用于执行 T 类型的减法操作。它接受两个参数,并返回这两个参数的差。以下是类模板定义了一个调用运算符operator(),它接受两个参数lhs和rhs,并返回它们的差。调用就相当于执行减法操作。原创 2023-11-21 13:57:33 · 100 阅读 · 0 评论 -
【C/C++】什么是POD(Plain Old Data)类型
只包含标量类型(如整数、浮点数、指针等)或者其他 POD 类型的成员。没有用户自定义的构造函数、析构函数或拷贝控制成员没有虚函数或虚继承可以通过memset和memcpy进行内存的简单复制和初始化。这些标准在 C++03 标准中被定义。根据这个定义,POD 类型可以被视为简单的、平凡的数据类型,可以进行一些底层的操作,如内存复制、比较和序列化等。POD 类型通常用于与 C 语言进行交互、进行低级别的内存操作或进行数据序列化和传输。原创 2023-11-06 17:17:04 · 1080 阅读 · 0 评论 -
C风格数组和std::array有什么区别
C风格数组在 C/C++ 中没有值语义。当将内置数组作为函数参数或返回值时,实际传递的是指向数组首元素的指针,而不是整个数组的副本。这意味着对函数参数中的数组或返回值返回的数组进行修改会影响原始数组,因为它们共享相同的内存。而当用std::array作为函数参数或返回值时,实际传递的是std::array的副本,这意味着它们各自使用不同的内存,就算修改也无法对彼此产生影响。也就是说,std::array有值语义。2023年11月6日,周一下午。原创 2023-11-06 15:52:19 · 114 阅读 · 0 评论 -
std::chrono::system_clock::time_point
是 C++ 标准库中的一个类,用于表示时间点。它是一个模板类,根据不同的时钟类型,可以表示不同精度的时间点。是其中一种时钟类型,它表示系统范围的实时时钟。除了,C++ 标准库还提供了其他几种时钟类型。每种时钟类型都具有不同的特性和用途。:这是一个单调递增的时钟,不受系统时间调整的影响。它主要用于计算时间间隔和测量程序的运行时间。:这是一个高分辨率时钟,提供更高精度的计时。它可能是或的别名,具体取决于实现。这些时钟类型都属于类的主要用途是记录或表示特定时间点,例如程序的启动时间、事件发生的时间等。原创 2023-11-06 13:48:48 · 811 阅读 · 0 评论 -
【C++】不是用new生成的对象调用析构函数
看一下代码示例:#include "stdafx.h"#include #include #ifdef _DEBUG#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)#endifusing namespace std;假如手动调用b1.~Book()时对象被销毁了,那么不可能再次执行析构函数里面的输出“调用析构函数”,毕竟对象都没了还怎么执行。是否可以手动调用析构函数_主动调用析构函数_isyb的博客-CSDN博客。:析构函数只是一个函数,并不能销毁对象。原创 2023-10-23 12:33:30 · 136 阅读 · 0 评论 -
【C++】假设给类分配的是栈的空间,那么计算机是如何访问栈中不同位置的对象的数据的呢?
在编译时,编译器会根据对象的类型和成员变量的顺序计算出每个成员变量相对于对象起始地址的偏移量。栈帧中包含一个指针,称为栈指针(stack pointer),它指向栈帧中的当前位置。当你创建一个对象时,它的数据就被存储在栈帧中的适当位置。通过使用 `.` 运算符,我们可以访问对象的成员变量 `name` 和 `age`,并进行赋值和打印操作。需要注意的是,栈上分配的内存空间是有限的,并且在函数调用结束后会自动释放。所以在使用栈上的对象时,需要注意对象的生命周期,避免在对象超出作用域后继续访问其数据。原创 2023-10-22 11:00:23 · 250 阅读 · 0 评论 -
【C++】头文件chrono
2023年10月16日,周一晚上当前我只是简单的了解了一下chrono以后可能会深入了解chrono并更新文章。原创 2023-10-16 18:44:01 · 661 阅读 · 0 评论 -
在C++中怎么把std::string类型的数字转成int类型的数字
2023年10月16日,周一下午要将 std::string 类型的数字转换为 int 类型的数字,可以使用 std::stoi 或者 std::atoi 函数。原创 2023-10-16 13:15:42 · 804 阅读 · 0 评论 -
【短文】在Linux中用g++编译使用了thread头文件的源文件时要注意的问题
在Linux上编程时,若使用了thread头文件,则用g++编译时要加上参数-lpthread。2023年9月22日,周日晚上。原创 2023-09-22 21:08:20 · 201 阅读 · 0 评论 -
【Java和C++】什么是多态
多态允许不同类的对象对相同的消息(方法)作出不同的响应。通俗来说就是,对于同一个函数makeSound,Animal类的对象的响应是输出"发出声音",Cat类的对象的响应是输出“喵喵...”,Dog类的对象的响应是输出“汪汪...”多态性使得程序能够以一种通用的方式处理不同类型的数据或对象,而无需关心它们的具体类型。在不同的编程语言中,多态性的实现方式和语法细节可能有所不同,但多态性的核心思想允许不同类型的对象在统一的接口下表现出不同的行为。原创 2023-09-20 17:28:32 · 161 阅读 · 0 评论 -
2023年9月12日:对C++学习的再次思考
虽然在这个过程中学到了不少的东西,也在CSDN输出了很多篇博客,但是始终觉得不对劲、不得劲。因为我觉得我学到的东西太浅显了,仅凭这些我无法成为优秀的C++程序员,也无法解决多少实际的问题。所以,我决定从今天开始继续几个月前的想法:在做项目中学C++,通过优秀源码来学习C++。此外,还要学习设计模式之类的内功。发现自己之前在脱离实际、脱离实践、孤立地学习C++,我觉得这不是什么学习C++的好方法。几个月前我在CSDN的另一篇博客说:要在做项目中学C++。但是我后来没有坚持下去,并开始学一些零零散散的知识。原创 2023-09-12 13:35:41 · 71 阅读 · 0 评论 -
【C++】宏函数的巧用
如果需要定义多行代码的宏函数,可以在宏函数中使用反斜杠来表示该行代码还未结束,继续在下一行继续编写代码。x *= 2;原创 2023-09-10 09:35:46 · 276 阅读 · 0 评论 -
【C++】可变参数模板
2023年9月9日,周六下午这个还是挺难学的,我学了好几天...在这里我会举大量的示例程序,这样可以有一个更好的理解,不定期更新。原创 2023-09-09 15:42:11 · 328 阅读 · 0 评论 -
【C++】怎么接受未知数量的参数?
2023年9月8日,周五下午。原创 2023-09-08 18:55:15 · 300 阅读 · 0 评论 -
【C++】在子类中怎么调用父类的方法
2023年8月31日,周四上午。原创 2023-08-31 10:52:29 · 2099 阅读 · 0 评论 -
【C++】详解inline
2023年8月28日,周一晚上。原创 2023-08-28 23:56:51 · 497 阅读 · 0 评论 -
【C++】详解声明和定义
我认为声明和定义的根本区别在于:同类型的一个标识符可以被重复声明多次,但只能被定义一次。简单来说,声明可以重复多次,但定义只能进行一次。和分不分配内存没有关系。可以看到,我声明了两次结构体student,VS2022没有报错结构体的定义只是对结构体类型的描述,并不会为其分配内存。要使用结构体,需要定义结构体变量,并为其分配内存空间。int age;可以看到,定义了两次结构体student后,VS2022报错因为与结构体的声明和定义一模一样,故不再赘述。原创 2023-08-28 21:32:16 · 1094 阅读 · 0 评论 -
【C++】map的奇葩用法:和函数结合
今天才发现map居然还能这样用...2023年8月26日,周六下午。原创 2023-08-26 15:58:11 · 179 阅读 · 0 评论 -
【C++】抽象类
在类中使用 virtual 关键字和 = 0 来声明一个纯虚函数。纯虚函数没有函数体,它只是一个接口,需要在派生类中实现。原创 2023-08-25 11:02:25 · 195 阅读 · 0 评论 -
【C++】虚函数
2023年8月23日,周三上午。原创 2023-08-23 22:03:55 · 284 阅读 · 0 评论 -
【C++】函数指针
感觉函数指针就是给函数起别名:通过创造一个和函数在返回值、参数列表方面一样的函数指针,就可以通过声明一个这样的函数指针来指向该函数,此后,就可以用这个函数指针的名字来调用该函数。这不就是给函数起别名吗。原创 2023-08-18 09:48:20 · 1371 阅读 · 0 评论 -
【C++】类的隐式转换和explicit抑制类的隐式转换
简单来说,explicit就是禁止类的隐式转换的:如果给上面的三个类的构造函数前面都加上explicit关键字,那么都会在打印函数部分报错,因为再也无法通过隐式转换变成相应的类的对象,只能老老实实调用类的构造函数。原创 2023-08-05 17:25:14 · 190 阅读 · 0 评论 -
C++中的typeid
typeid是 C++ 中的运算符,用于获取表达式或类型的运行时类型信息。它返回一个std::type_info对象,该对象包含有关类型的信息,例如类型的名称。原创 2023-08-10 14:45:51 · 1251 阅读 · 0 评论 -
C++中的结构体继承一个类
在C++中,结构体可以继承另一个类。2023年8月5日,周六上午。原创 2023-08-05 10:29:13 · 95 阅读 · 0 评论