![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
西之可乐
相信自己
展开
-
浅拷贝和深拷贝
C++的浅拷贝和深拷贝原创 2022-06-30 16:44:24 · 390 阅读 · 0 评论 -
static_cast 与 reinterpret_cast
任何具有明确定时的类型转换,只要不包含底层const,都可以使用static_cast。通常C语言里面的强制类型转换都可以换成static_cast。 包含底层const的请用const_cast。 static_cast 在编译时使用类型信息执行转换,在转换执行必要的检测(诸如指针越界计算, 类型检查). 其操作数相对是安全的。另一方面;reinterpret_cast 仅仅是重新解释了给出的对象的比特模型而没有进行二进制转换。 看下例:int n=9; double d=s原创 2020-12-31 15:25:22 · 544 阅读 · 0 评论 -
C++中引用与指针的相同和不同
编译上的不同程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变其指向的对象(指针变量中的值可以改),而引用对象则不能修改。引用的规则引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。不能有NULL引用,引用...原创 2018-09-20 15:05:41 · 397 阅读 · 0 评论 -
动态内存管理中的一些问题
容易出现的问题:使用malloc分配内存后没有清零内存,可以使用memset或者calloc来初始化内存,进行清零操作没有检查分配内存函数的返回值。但C++的new出错会抛出异常。引用已释放的内存多次释放内存不匹配的动态内存管理函数。比如malloc跟free配对,new和delete配对,但malloc的内存不能用delete来释放。未正确区分标量和数组。比如用new分配的数组a[...原创 2018-11-29 16:08:19 · 322 阅读 · 0 评论 -
const引用与指针
const引用对常量的引用不能被用作修改它所绑定的对象。但是不能防止其他途径来修改对指向的对象。const int ci = 1024;const int &r1 = ci; //正确:引用及其对应的对象都是常量r1 = 42; //错误,r1是对常量的引用int &r2 = ci; //错误,试图让一个非常量引用指向一个常量引用指向常量的指针不能用...原创 2018-12-24 13:35:53 · 1334 阅读 · 1 评论 -
C++中的左值和右值
左值与右值这两概念是从C语言中传承而来的,在C语言中,左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式)。在C++中,当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。在需要右值的地方可以用左值来代替,但是不能把右值当做左值(位置)来使用。当一个左值被当成右值使用时...原创 2019-01-28 20:55:13 · 401 阅读 · 0 评论