智慧型指標unique ptr的使用

2022-07-24 05:00:17 字數 2064 閱讀 5485

template> class unique_ptr;
template class unique_ptr;
std::unique_ptr是通過指標占有並管理另一物件, 並在unique_ptr離開作用域時釋放該物件的智慧型指標。

釋放物件的時機->:

銷毀了管理的unique_ptr物件

通過operator=reset()賦值另一指標給管理的unique_ptr物件

也可以通過呼叫get_deleter()(ptr)刪除物件;

unique_ptr是可以轉義物件的管理權的,但是被const修飾之後就不能夠被轉移了

函式名字

作用operator=

賦值reset

替換被管理物件

swap

交換被管理物件

release

返回被管理物件的指標,並且釋放乙個物件所有權

get

返回被管理物件的指標

函式名字

作用make_unique

建立乙個管理物件的獨佔指標

std::swap(std::unique_ptr)

特化std::swap演算法

struct base 

virtual ~base() = default;

std::string val;

};struct derived : base

~derived()

void bar() override

std::string val;

};int main()

std::cout << "\n多型執行時測試----->\n";

// 這裡將呼叫3次析構函式

}std::cout << "\n陣列形式的unique_str物件測試--->\n";

;// 這裡將呼叫4次析構函式

}return 0;

}

unique_ptr 指向物件的所有權的測試---->

derived::constructor

derived::bar()

unique_ptr

derived::descontructor

多型執行時測試----->

derived::constructor

derived::bar()

derived::constructor

derived::constructor

derived::bar()

derived::bar()

derived::bar()

derived::descontructor

derived::descontructor

derived::descontructor

陣列形式的unique_str物件測試--->

derived::constructor

derived::constructor

derived::constructor

derived::constructor

derived::descontructor

derived::descontructor

derived::descontructor

derived::descontructor

智慧型指標 unique ptr

unique ptr 是 c 11 提供的用於防止記憶體洩漏的智慧型指標中的一種實現,獨享被管理物件指標所有權的智慧型指標。int main std move是將物件的狀態或者所有權從乙個物件轉移到另乙個物件,只是轉移,沒有記憶體的搬遷或者記憶體拷貝所以可以提高利用效率,改善效能.get函式會返回儲...

c 智慧型指標 unique ptr

智慧型指標是基於raii機制實現的類 模板 具有指標的行為 過載了operator 與operator 操作符 可以 智慧型 地銷毀其所指物件。c 11中有unique ptr shared ptr與weak ptr等智慧型指標,可以對動態資源進行管理 unique ptr 唯一 擁有其所指物件,同...

C 智慧型指標 unique ptr

unique ptr 唯一 擁有其所指物件,同一時刻只能有乙個unique ptr指向給定物件 通過禁止拷貝語義 只有移動語義來實現 unique ptr指標本身的生命週期 從unique ptr指標建立時開始,直到離開作用域。離開作用域時,若其指向物件,則將其所指物件銷毀 預設使用delete操作...