C++
文章平均质量分 64
C++常用知识总结
mj348940862
这个作者很懒,什么都没留下…
展开
-
std::function详解
std::function是一个函数包装模板,可以包装下列这几种可调用元素类型:函数、函数指针、类成员函数指针或任意类型的函数对象(例如定义了operator()操作并拥有函数闭包)。std::function对象可被拷贝和转移,并且可以使用指定的调用特征来直接调用目标元素。当std::function对象未包裹任何实际的可调用元素,调用该std::function对象将抛出std::bad_function_call异常。原创 2024-04-09 10:19:22 · 864 阅读 · 0 评论 -
C++11中的lambda函数
默认情况下,lambda函数是const函数,当lambda函数使用值传递时,mutable使得函数可以const限制,可以修改值传递进来的参数。:捕获列表,捕获列表出现在lambda函数的起始处,[]也被称为lambda的引出符,编译器根据引出符判断接下来的代码是否是lambda函数。[=,&a,&b] :表示引用传递的方式捕获变量a和b,值传递方式捕获所有父作用域变量。statement:函数体实现,除了可以使用参数列表的参数,也可以使用捕获列表的值。[var] :表示值传递方式捕获变量var。原创 2024-03-11 11:12:32 · 398 阅读 · 0 评论 -
C++友元函数和友元类(C++ friend关键字)
例如将类 B 声明为类 A 的友元类,那么类 B 中的所有成员函数都是类 A 的友元函数,可以访问类 A 的所有成员,包括 public、protected、private 属性的。如果声明了类 B 是类 A 的友元类,不等于类 A 是类 B 的友元类,类 A 中的成员函数不能访问类 B 中的 private 成员。如果类 B 是类 A 的友元类,类 C 是类 B 的友元类,不等于类 C 是类 A 的友元类。注意,友元函数不同于类的成员函数,在友元函数中不能直接访问类的成员,必须要借助对象。原创 2023-12-13 10:09:13 · 1046 阅读 · 0 评论 -
static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符)
C/C++类型转换的本质在 C/C++ 中,不同的数据类型之间可以相互转换:无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换(显式类型转换)。隐式类型转换利用的是编译器内置的转换规则,或者用户自定义的转换构造函数以及类型转换函数(这些都可以认为是已知的转换规则),例如从 int 到 double、从派生类到基类、从type *到void *、从 double 到 Complex 等。type *是一个具体类型的指针,例如int *、double *、原创 2023-12-05 12:19:12 · 829 阅读 · 0 评论 -
vs番茄助手突然不显示并且重新安装也不显示
原创 2023-12-01 16:38:16 · 601 阅读 · 0 评论 -
C++工程师面试必问面试题
答:当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。智能指针的一种通用实现技术是使用引用计数。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;原创 2023-11-29 09:35:39 · 402 阅读 · 0 评论 -
log4cpp 的使用
log4cpp 使用原创 2022-11-03 14:58:58 · 920 阅读 · 0 评论 -
C++中的前置声明
C++头文件中关于类和结构体的前置声明原创 2022-08-24 18:48:08 · 1499 阅读 · 0 评论 -
vector的几种清空容器(删除)办法
vector清空内存的方法原创 2022-08-09 09:31:20 · 4261 阅读 · 0 评论 -
C++中 delete 和 delete[] 的区别
delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存(1). 针对简单类型 使用new分配后的不管是数组还是非数组形式内存空间用两种方式均可 如:int *a = new int[10];delete a; //方式1delete [] a; //方式2此种情况中的释放效果相同,原因在于:分配简单类型内存时,内存大小已经确定,系统可以记忆并且进行管理,在析构时,系统并不会调用析构函数,它直接通过指针可以获取实际分配的原创 2022-03-24 15:19:55 · 176 阅读 · 0 评论 -
TinyXML2使用教程
TinyXML2使用教程原文转自 http://blog.csdn.net/K346K346/article/details/487504171.TinyXML2概述TinyXML2是simple、small、efficient开源的C++ XML文件解析库,可以很方便的应用到现有的项目之中。非常适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作。TinyXML2详细介绍与源码获取方法详见:TinyXML2官网。2. TinyXML1与TinyXML2对比TinyXML1与TinyXM转载 2022-03-18 17:59:00 · 2129 阅读 · 0 评论 -
C++迭代器失效的几种情况总结
C++迭代器失效的几种情况总结一、序列式容器(数组式容器)对于序列式容器(如vector,deque),序列式容器就是数组式容器,删除当前的iterator会使后面所有元素的iterator都失效。这是因为vetor,deque使用了连续分配的内存,删除一个元素导致后面所有的元素会向前移动一个位置。所以不能使用erase(iter++)的方式,还好erase方法可以返回下一个有效的iterator。1 for (iter = container.begin(); iter != container.e原创 2022-01-11 13:20:49 · 1056 阅读 · 0 评论