[C++11]独占的智能指针unique_ptr的初始化和使用
生活随笔
收集整理的這篇文章主要介紹了
[C++11]独占的智能指针unique_ptr的初始化和使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
是一個獨占型的智能指針,它不允許其他的智能指針共享其內部的指針,可以通過它的構造函數初始化一個獨占智能指針對象,但是不允許通過賦值將一個
unique_ptr 賦值給另一個 unique_ptr。
來轉譯給其他的 std::unique_ptr,這樣原始指針的所有權就被轉移了,這個原始指針還是被獨占的。
- ptr1.reset(); 解除對原始內存的管理
- ptr2.reset(new int(250)); 重新指定智能指針管理的原始內存
代碼如下:
#include <iostream> #include <memory> #include <string> using namespace std;class Test { public:Test(){cout << "construct" << endl;}Test(int x) :m_num(x){cout << "construct x = " << x << endl;}Test(string str){cout << "construct str = " << str << endl;}~Test(){cout << "destruct" << endl;}void setValue(int v){m_num = v;}void print(){cout << "m_num = " << m_num << endl;}private:int m_num; };int main() {//通過構造函數初始化unique_ptr<int>ptr1(new int(9));//unique_ptr<int>ptr2 = ptr1; error//通過移動構造函數初始化unique_ptr<int>ptr2 = move(ptr1);//通過reset初始化ptr2.reset(new int (8));//獲取原始指針unique_ptr<Test> ptr3(new Test(1));Test*pt = ptr3.get();pt->setValue(2);pt->print();ptr3->setValue(4);ptr3->print();return 0;}測試結果:
總結
以上是生活随笔為你收集整理的[C++11]独占的智能指针unique_ptr的初始化和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山楂水的功效与作用、禁忌和食用方法
- 下一篇: 减肥一斤要消耗多少千卡热量