![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 55
qq_40178082
这个作者很懒,什么都没留下…
展开
-
模板显式、隐式实例化和(偏)特化、具体化的详细分析
最近看了看到了模板的特化,突然想起来上说的显式具体化、隐式具体化、特化、偏特化、具体化等概念弄得头晕脑胀,我在网上了找了好多帖子,才把概念给理清楚。原创 2024-06-10 11:57:25 · 731 阅读 · 0 评论 -
C++17之std::variant
如下列出了为std:: variable 提供的所有操作。原创 2024-03-17 16:36:40 · 139 阅读 · 0 评论 -
Notepad++ 配置C/C++语言编译环境
https://blog.csdn.net/lanlanmoqi/article/details/132378203https://blog.csdn.net/weixin_43090173/article/details/123910468原创 2024-02-25 17:03:06 · 109 阅读 · 0 评论 -
【C++】const与constexpr详解
所谓常量表达式,指的就是由多个(≥1)常量组成的表达式。换句话说,如果表达式中的成员都是常量,那么该表达式就是一个常量表达式。这也意味着,常量表达式一旦确定,其值将无法修改。实际开发中,我们经常会用到常量表达式。以定义数组为例,数组的长度就必须是一个常量表达式:上述代码演示了 3 种定义 url 数组的方式,其中第 1、2 种定义 url 数组时,长度分别为 10 和 6+4,显然它们都是常量表达式,可以用于表示数组的长度;第 3 种 url 数组的长度为 length,它是变量而非常量,因此不是一个常原创 2024-02-18 21:16:50 · 1143 阅读 · 0 评论 -
boost::apply_visitor
类型对象中的值,根据存储的不同类型值自动调用对应的处理函数,这对于处理不同类型的值在一组数据结构中很有用。则允许你使用访问者模式(Visitor Pattern)来处理 Variant 类型对象中的值。在 Boost 中,Variant 类型提供了一种安全、类型化的方式来处理不同类型的值。,并依次给它赋值为整数、字符串和浮点数。在这个示例中,我们首先定义了一个包含。让我们来看一个简单的示例来说明。函数,分别用于处理不同类型的值。对象中存储的实际值类型,调用。函数中,我们创建了一个。,它包含了三个重载的。原创 2023-12-19 15:13:15 · 387 阅读 · 0 评论 -
C++ 在.h文件中包含头文件和在.cpp文件中包含头文件有什么区别?前置声明
Note:类A在编译的时候不需要拿到类B的定义是因为这里面定义的是指针,而对于指针是不需要定义就可以进行内存布局的,在编译A的类的声明的时候,在进行内存布局的时候是不需要拿到B的定义的。假设有两个类 A 和 B,A 类包含了 B 类的一个指针成员,并且在 A.cpp 文件中使用了 B 类的成员函数。6、如果a.c包含了头文件a.h,a.h包含了头文件b.h,b.c也包含了b.h,那么当b.h发生改变时,a.c和b.c都会重新编译。其中A类有一个成员b是Class B的指针,这个时候可使用类前置声明。原创 2023-12-19 14:47:08 · 1624 阅读 · 0 评论 -
fmt::format
https://fmt.dev/latest/syntax.html原创 2023-12-13 18:21:05 · 375 阅读 · 0 评论 -
【C++ 语法】__VA_ARGS__ 可变参数宏
正在编译文件的路径及文件名:正在编译文件的行号:编译时刻的日期字符串 如“Jun 17 2017”:编译时刻的时间字符串 如”1000“提示:__LINE__是整型数据;其实除了这些还有很多相关的定义,比如:1.:函数名,类型为:字符常量指针。2.:IDE版本信息,类型为:整型。原创 2023-12-13 18:12:20 · 1433 阅读 · 0 评论 -
unordered_set自定义hash函数
【代码】unordered_set自定义hash函数。原创 2023-12-11 16:53:42 · 491 阅读 · 0 评论 -
ASAN内存检测
ASan是Address Sanitizer简称,它是一种基于编译器用于快速检测原生代码中内存错误的工具。简而言之, ASan就是一个用于快速检测内存错误的工具, 目前已经集成在LLVM 3.1+和GCC 4.8+中。原创 2023-12-06 10:48:00 · 1054 阅读 · 0 评论 -
初始化到指定内存
【代码】初始化到指定内存。原创 2023-11-27 18:27:59 · 362 阅读 · 0 评论 -
指针数组使用技巧
【代码】指针数组使用技巧。原创 2023-11-26 21:07:54 · 444 阅读 · 0 评论 -
std::function
/ 普通函数// lambda表达式// 函数对象类int main()} },return 0;来源。原创 2023-11-14 21:24:29 · 83 阅读 · 0 评论 -
va_list
可以是传入一个参数也可以是多个;可变参数中的每个参数的类型可以不同,也可以相同;可变参数的每个参数并没有实际的名称与之相对应,用起来是很灵活。函数是 C 标准库中的一个函数,用于将可变参数格式化为字符串,并将结果存储到一个字符数组中,类似于。是一个 C 标准库函数,用于格式化字符串,并将结果存储到一个字符数组中,同时限制字符串的长度。不是直接将结果打印到标准输出或文件中,而是将其存储在指定的字符数组中。,用于格式化字符串并将结果存储到字符数组中,与。是在C语言中解决变参问题的一组宏,原创 2023-09-26 11:03:34 · 92 阅读 · 0 评论 -
包含关系和多态性的使用
在main函数中,我们创建了类B的对象bObject和类C的对象cObject,然后使用bObject.setA(&cObject)来设置类B中的指针,使其指向类C的对象。这是一种常见的面向对象编程模式,其中一个类包含(或持有)另一个类的对象,并且可以通过接口(通常是虚函数)实现多态性。在不同的上下文中,可能会使用不同的术语来描述这种模式,但"包含关系和多态性的组合"通常足以描述它的特性和用法。在这个示例中,类A是一个抽象基类,包含了一个纯虚函数tick。类B是包含关系,它包含了一个指向类A对象的指针。原创 2023-09-15 14:44:02 · 51 阅读 · 0 评论 -
前置声明(Forward Declaration)
前置声明的目的是为了告诉编译器某个实体的存在,以便在稍后的代码中引用它,而不必在声明的地方提供完整的定义。要声明变量,编译器需要更多的信息,这通常需要包含完整的类定义。前置声明告诉编译器类型的存在,但不提供关于该类型的大小和内部布局的信息,因此编译器无法生成正确的代码。需要注意的是,**前置声明只允许对被声明实体的指针和引用的操作,因为编译器不知道实体的具体定义,无法分配内存或访问其成员。这是最常见的前置声明,用于告诉编译器MyClass类的存在,以便在稍后的代码中引用它,而无需包含完整的类定义。原创 2023-09-14 23:12:30 · 1402 阅读 · 0 评论 -
PIMPL技巧
如果你运气很好公司配給你8 cores CPU、SSD、32G DDRAM,会觉得PIMPL是多此一举。~Foo();~Foo();private:#else#endif#endif这样做会有什么问题?原创 2023-09-14 22:25:44 · 123 阅读 · 0 评论