標頭檔案:「boost/scoped_ptr.hpp」
scoped_ptr是乙個類似於auto_ptr的智慧型指標,包裝了new操作符在堆上分配動態物件,能夠在保證在任何時候都能將動態分配的物件正確的刪除。scoped_ptr的所有權不能移交給別的物件,並且不允許複製和賦值操作。
**實現
templatet>
classscopedptr
~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;
intmain()
(1)使用過載操作符「*」:
scoped_ptrsp(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請求的頁面或資源只能是同乙個域下面的資...