![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 53
记录使用C++时遇到的问题
xxxx9300
这个作者很懒,什么都没留下…
展开
-
C++ resize和reserve详解
目录1.resize2.reserve1.resize2.reserve原创 2024-02-07 15:44:35 · 433 阅读 · 0 评论 -
C++强制类型转换之const_cast
一个简单的例子如下,"const int *p"中的 const 是底层 const ,使用 const_cast 去掉这个底层 const 以后,尽管我们可以通过 q 改变指针指向的变量,但是从运行结果来看,这种通过 q 写值的行为并不合适。(2)只有 const_cast 能改变运算对象的常量属性,使用其它形式的命名强制类型转换、改变运算对象的常量属性、都将引发编译器的错误。(1)const_cast 只能改变运算对象的底层 const,底层 const 和顶层 const 的区别如下图。原创 2024-01-12 22:11:54 · 23114 阅读 · 1 评论 -
C++强制类型转换之static_cast
【代码】C++强制类型转换之static_cast。原创 2024-02-07 11:07:51 · 474 阅读 · 0 评论 -
C++友元函数/友元类
(1)在类中用friend关键字去声明函数/类,则这个函数/类就会变成友元函数/友元类;(2)友元函数/友元类的声明位置没有要求,可以在private、protected、public权限区,效果都是一样的;(3)友元函数/友元类是单向的,A在B类中被声明为友元函数/友元类,表示A是B的友元函数/友元类,但B不是A的友元函数/友元类;(4)友元函数/友元类具有和类成员一样的权限,可以访问protected和private权限的成员,但不是类的成员;原创 2024-02-04 12:59:52 · 926 阅读 · 0 评论 -
C++构造函数/析构函数/复制构造函数(深拷贝/浅拷贝)
比如上面B在拷贝A时,将A.name的值原封不动拷贝过来,导致B.name指向同一块内存,但是那块内存是A申请的,A在使用时不会考虑B,就可能存在A将内存释放掉但是B不知道,B仍然在使用那块内存,此时就会出错;(2)如何定义拷贝的深和浅:浅拷贝就是把类/结构体的变量原封不动的赋值,不考虑指针变量;(1)当我们对复杂类型(结构体或者类)的对象进行初始化时,如果将对象A赋值给同类型的对象B,此时就涉及深拷贝和浅拷贝的问题;总结:对象拷贝时,对指针变量做处理的是深拷贝,不对指针变量做处理的是浅拷贝;原创 2024-02-03 23:21:04 · 1004 阅读 · 0 评论 -
C++ this指针/常量成员函数/const/mutable
(1)const关键字在C语言中就有,C++兼容C,所以C中const的用法C++中全都支持;(2)const修饰引用,主要用于函数传参,限制函数内部对实参进行修改;(3)const修饰成员函数(常函数),限制成员函数在内部修改成员变量;原创 2024-02-02 13:14:19 · 942 阅读 · 0 评论 -
C++ static关键字的作用
局部变量就是在函数内定义的变量,普通的局部变量,生存周期是随着函数的结束而结束,每次函数重新执行,局部变量都是新的值,不会保留上次的值。普通的全局变量是可以被其他的.c文件引用的,一旦被static修饰,就只能被定义该全局变量的.c文件引用,使得该全局变量的作用范围减小。总结:用static修饰的局部变量,改变了生存周期,但是没有改变其作用域。作用:当一个全局变量不想被其他.c文件引用时,可以用static修饰,这样其他的文件就不能通过extern的方式去访问,这样主要是为了数据安全。原创 2022-01-07 09:06:46 · 708 阅读 · 0 评论 -
VS2017 C2065 未声明的标识符
VS2017 C2065 未声明的标识符原创 2022-08-19 14:35:27 · 1582 阅读 · 0 评论 -
union中的成员变量占用同一片内存空间
union中的成员变量占用同一片内存空间原创 2023-01-14 21:31:36 · 192 阅读 · 0 评论 -
冒泡排序C++实现代码
以从小到大排序为例:假设数组中有N个元素,由于每趟冒泡可以将“无序部分”的最大值插入到“有序部分”的最左边,所以需要执行(N - 1)趟冒泡。开始执行第 i 趟冒泡时,“有序部分”包含 i 个元素,“无序部分”包含(N - i)个元素;从“无序部分”的第1个元素开始,与右侧相邻元素比较大小,若左侧元素大于右侧相邻元素,则执行交换;完成(N - i - 1)次比较和交换后,“无序部分”的最大值是其最后一个元素,同时也是“有序部分”的第一个元素。下面的代码中,若flag为1,则数组按降序排列;原创 2023-05-26 12:52:14 · 365 阅读 · 0 评论