C 11中的智慧型指標 shared ptr

2021-08-19 09:26:58 字數 934 閱讀 1743

今天上午在研究boost io_service的時候,打算寫乙個小的demo,用到智慧型指標中的shared_ptr,雖然之前看了很多這個方面的資料,但是使用的並不多,寫起來code,才發現對於shared_ptr的了解真的是有限,手生的很,因此邊搜尋資料,邊寫code,完成之後做乙個總結.

shared_ptr的基本概念這裡就不做介紹了,主要說下用到的幾個比較重要的知識點。

一、shared_ptr的初始化。

shared_ptr初始化主要有2種方式。

第一種:採取shared_ptr建構函式的方式。std::shared_ptrptr(new t())  這種方式採取在智慧型指標建構函式中放入乙個指標物件。

第二種:採取make_shared的方法。std::shared_ptr=std::make_shared();這裡要特別注意的是,make_shared函式的引數是t建構函式的引數。比如我們在建立乙個執行緒的智慧型指標的時候,std::shared_ptrthread=std::make_shared(func);這裡func為std::thread建構函式需要傳入的函式指標。如果是在某個類中使用,我們這裡可以修改為如下:std::shared_ptrthread=std::make_shared(&a::func,this)。

二、get()函式返回裸指標。如果在需要使用裸指標的時候,可以通過get函式返回裸指標。比如std::shared_ptrt(new t());t* tptr=t.get();這樣就可以返回指向t的裸指標。

三、shared_from_this()函式返回指向this的shared_ptr。

使用場景:當類a被shared_ptr管理,且在類a的成員函式中,需要把當前類物件作為引數傳遞給其他函式時,就需要傳遞乙個指向自身的shared_ptr.

使用的時候,讓類a繼承自std::enable_shared_from_this即可。

下面的圖是從csdn上找的

C 11智慧型指標

本文介紹c 的四種智慧型指標,其中後三種是c 11新增加的,auto ptr已被棄用。要編譯c 11,需要安裝g 4.8 sudo add apt repository ppa ubuntu toolchain r test sudo apt get update sudo apt get inst...

c 11 智慧型指標

如果在程式中使用new從堆 自由儲存區 分配記憶體,等到不需要時,應使用delete將其釋放。c 引入了智慧型指標auto ptr,以幫助自動完成這個過程。c 11摒棄了auto ptr,並新增了三種智慧型指標 unique ptr,shared ptr,weak ptr。一.auto ptr,un...

c 11 智慧型指標

首先來看shared ptr,先貼一小部分vs2013裡的實現 template class shared ptr template class shared ptr public ptr base ty template explicit shared ptr ux px template cla...