建立html网站,wordpress主页慢,上海网络营销广告单位,兰州装修公司排名榜文章目录 unique_ptr概述unique_ptr常用操作 unique_ptr概述
uniue_ptr是一个独占式的指针,同一个时刻, 就只能有一个unique_ptr指向这个对象(内存),unique_ptr的使用格式
unique_ptrClass_Tyep P_Name;
unique_ptr的常规初始化:
unique_ptrint p; 创建一个空… 文章目录 unique_ptr概述unique_ptr常用操作 unique_ptr概述
uniue_ptr是一个独占式的指针,同一个时刻, 就只能有一个unique_ptr指向这个对象(内存),unique_ptr的使用格式
unique_ptrClass_Tyep P_Name;
unique_ptr的常规初始化:
unique_ptrint p; 创建一个空的智能指针
unique_ptrint pi(new int);make_unique函数 make_unique函数是在C14中引入的,使用了make_unique函数之后不能指定删除器, 如果不需要使用删除器, 尽量使用make_unique函数,他的效率高 unique_ptrint p make_uniqueint(100);auto p2 make_uniquestring(C);unique_ptr常用操作
unique_ptr的初始化和赋值 unique_ptrint p1 make_uniqueint(100);unique_ptrint p2(new int(200));// unique_ptrint p3(p1); 不支持定义时初始化
// p1 p2; 不支持赋值操作// 支持移动语义unique_ptrint p3 std::move(p2); // 移动过后, p2为空, p3指向原来p2指向的对象.release release(): 放弃对指针的控制权, 切断了智能指针和其所指向的对象的联系 他会返回一个裸指针, 可以将返回的这个裸指针手工delete释放, 也可以用来初始化另外一个智能指针. unique_ptrint p1(new int(100));unique_ptrint p2(p1.release());// delete p1.release();if (p1 nullptr) cout ha ha endl;cout *p2 endl;reset() reset不带参数: 释放智能指针指向的对象, 将智能指针置空 unique_ptrstring pstr(new string(C));pstr.reset();if (pstr nullptr) cout 指针为空 endl;reset带参数, 释放智能指针指向的对象, 并让该智能指针指向新的对象 unique_ptrstring pstr(new string(C));//pstr.reset();//if (pstr nullptr) cout 指针为空 endl;unique_ptrstring pstr1(new string(Java));pstr.reset(pstr1.release());cout *pstr endl;nullptr nullptr释放智能指针指向的对象, 并将智能指针置空 unique_ptrint ps1(new int(200));ps1 nullptr;指向一个数组
unique_ptrint[] p(new int[10]());