- 博客(4)
- 收藏
- 关注
原创 c++类型强制转换
1.const_cast 特性:1)可以去除变量的const 或者 volatile属性 void Type_transform::ConstCast() { const Test t; t.s = "1111111"; //const 无法直接赋值 编译报错 Test &tt = const_cast<Test&>(t); tt.s = "1111111111"; //使用const_cast转换后取出了const属性可以正常赋值 } 2
2021-12-28 22:21:00
661
原创 c++智能指针weak_ptr
1.为什么需要weak_ptr 为了解决shared_ptr循环引用导致内存泄漏的问题,才引入了weak_ptr。通过引入weak_ptr,顺利解决了这个问题。 2.回顾shared_ptr循环引用问题 2.1代码及运行输出 struct TestB; struct TestA{ TestA(){ a = QUuid::createUuid().toString(); qInfo() << a <<"已经被构造了"<<endl;
2021-12-26 21:49:13
358
原创 c++智能指针unique_ptr
1.为什么需要unique_ptr 与shared_ptr作用类似,需要解决内存泄漏的问题,但是却不需要使用shared_ptr的引用计数,所以为了减少消耗,就需要一个这样的智能指针。但是使用已被废弃的auto_ptr的话就会有新的问题,auto_ptr在使用过程中如果被拷贝构造或者赋值的话,被复制的auto_ptr就失去了作用,这个时候就需要在auto_ptr的基础上禁用拷贝构造以及赋值操作,也就成了unique_ptr。 2.什么是unique_ptr 一个unique_ptr独享它指向的对象。也就是
2021-12-25 23:00:53
253
原创 c++智能指针shared_ptr
1.为什么需要shared_ptr智能指针 我们在日常使用指针过程中一般标准的大致流程应该是这样的。 void funcTest(){ int *pI = new int; //doSomething delete pI; } 但如果我们由于种种原因忘记在最后delete掉在堆栈上分配的对象,就会造成内存泄露。 还有这么一个情景 void funcTest0(int *pI){ //doSomething delete pI; } void funcTest1
2021-12-25 20:06:38
324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人