C Primer學習 智慧型指標與動態記憶體 2

2021-07-05 20:43:10 字數 1510 閱讀 8427

//定義並初始化

unique_ptr p(new

int(42));

p = nullptr;//釋放

p.release();//放棄對指標的控制,返回指標.但是不釋放所指物件

p.reset();//釋放所指物件

p.reset(q);//釋放所指物件,提供內建指標q,並令p指向這個物件

p.reset(nullptr);

class strblobptr;

class strblob

;//預設初始化

strblob(initializer_listil) : data(make_shared>(il)){};

size_t size()const ;

bool empty() const

void push_back(const

string & s) ;

void pop_back() ;

string & front();

string & back();

const

string & front()const;

const

string & back()const;

strblobptr begin();//定義成員函式

strblobptr end();//定義成員函式

private:

shared_ptr

>data;//智慧型指標

void check(size_t , const

string&)const;

};void strblob:: check(size_t i, const

string&msg)const

class strblob;

class strblobptr

; strblobptr(strblob & a, size_t sz = 0) :wptr(a.data), curr(sz){};

string & deref() const;

strblobptr& incr();

private:

weak_ptr> wptr;

size_t curr;//定義下標

shared_ptr

> check(size_t, const

string&)const;

};shared_ptr

> strblobptr::check(size_t i, const

string& msg) const

string& strblobptr::deref() const

strblobptr& strblobptr::incr()

//定義strblob的成員函式begin(),end()

strblobptr strblob::begin()

strblobptr strblob::end()

c primer筆記 智慧型指標

智慧型指標的陷阱 基本規範 1.不使用相同的內建指標值初始化 或reset 多個智慧型指標。double free 2.不delete get 返回的指標。double free 3.不使用get 初始化或reset另乙個智慧型指標。double free 4.如果你使用get 返回的指標,記住當最...

C Primer 筆記 智慧型指標

1.新的標準庫提供了兩種智慧型指標型別,shared ptr允許多個指標指向同乙個物件,unique ptr則獨佔所指的物件。標準庫還定義了乙個名為weak ptr的伴隨類,它是一種弱引用,指向shared ptr所管理的物件。2.智慧型指標也是模板,預設初始化的智慧型指標中儲存著乙個空指標。3.智...

讀C Primer 之智慧型指標

author xizero00 mail xizero00 163.com date 2011 08 07 20 19 11 smart pointer sample include using namespace std 智慧型指標類 class smartptr 析構函式 smartptr 使用...