scoped ptr解析和總結

2021-07-02 15:38:12 字數 1759 閱讀 4293

標頭檔案:「boost/scoped_ptr.hpp」

scoped_ptr是乙個類似於auto_ptr的智慧型指標,包裝了new操作符在堆上分配動態物件,能夠在保證在任何時候都能將動態分配的物件正確的刪除。scoped_ptr的所有權不能移交給別的物件,並且不允許複製和賦值操作。

**實現

template

t>

class

scopedptr

~scopedptr()

void

reset(t

*p=0)

}

t&operator*()

const

t*operator->()

const

t*get()

const

void

swap(scopedptr

&rhs)

private:

scopedptr(const

scopedptr&rhs);

scopedptr

&operator=(const

scopedptr&rhs);

t*mp;

};

用法:在開頭加上

#include

和using

boost::

scoped_ptr;

int

main()

(1)使用過載操作符「*」:

scoped_ptr

sp(new

string("book"));

cout<<*sp<(2)使用過載操作符「->」:

coutsp.reset(new

string("the

second"));

cout<<*sp<(4)使用swap函式:

scoped_ptr

sp2(new

string("school"));

sp.swap(sp2);
cout<<"sp's

value

:"<<*sp<"sp2's

value

:"<<*sp2《總結:

●不需要進行delete操作,因為在scoped_ptr物件超出作用域的時候,編譯器會呼叫scoped_ptr物件的析構函式將動態分配的物件刪除,將資源返回給系統。

●scoped_ptr不允許複製(拷貝)、賦值。

●scoped_ptr類過載了*和->操作符,沒有過載++ 或 -- 等操作符。

與auto_ptr的區別:

根本區別在於指標的所有權。auto_ptr被設計成指標的所有權可以轉移給其他物件(通過複製或賦值);但是scoped_ptr物件不能轉移指標的所有權,一直獨佔指標的所有權(除了使用reset成員函式重置內部指標所指的物件,又或者使用swap成員函式交換指標的所指的物件);

auto_ptr的物件可以被作為副本而構造新物件,也可以賦值。但是scoped_ptr禁止複製或賦值(因為複製建構函式和賦值操作符被宣告為私有的,但是沒有被定義);

xml解析和序列化總結

第一,xml是什麼?和html類似,區別 xml是儲存資料的,自定義的 html是顯示資料的,預定義的 常用1.0版本,不用1.1不想下相容 應用系統之間傳輸資料的格式 表示生活中的關係 配置檔案 第二,語法 宣告 駝峰命名法 必須放到第一行,還要第一列 元素的定義 有開始就有結束 沒有內容就行內結...

SAX解析及SAX和DOM總結

dom解析器是將xml文件解析成樹狀模型並放入記憶體來完成解析工作的,而後對文件的操作都是在這個樹狀模型上完成的。這樣做的好處是結構清楚,操作方便。缺點極其耗費系統資源。不適用於解析超大型的xml檔案。sax解析器是通讀整個文件,根據文件內容產生事件,而把對這些事件的處理交由事件處理器處理。sax不...

全面解析Ajax和jsonp使用總結

前言 ajax和jsonp可以與後台通訊,獲取資料和資訊,但是又不用重新整理整個頁面,實現頁面的區域性重新整理。一 ajax 定義 一種傳送http請求與後台進行非同步通訊的技術。原理 例項化xmlhttp物件,使用此物件與後台通訊。ajax的同源策略 ajax請求的頁面或資源只能是同乙個域下面的資...