基本概念
所在庫C 11模板庫 #include <memory> shared_ptr<T> ptr(new T); // T 可以是 int,、char,、類等各種類型 GNU G 的標準庫中還沒有支持,需使用boost #include <boost/shared_ptr.hpp> 內(nèi)存每個 shared_ptr 對象在內(nèi)部指向兩個內(nèi)存位置
計數(shù)變化規(guī)則
ptr.use_count(); 構(gòu)造方法(1)使用空參數(shù)構(gòu)造函數(shù)構(gòu)造 std::shared_ptr<T> ptr; 這樣構(gòu)造的話,,ptr 的意義就相當于一個 NULL 指針,。當試圖在一個空指針上做類似于 *ptr 或者 ptr->xx 之類的東西的時候,會出現(xiàn)異常錯誤 std::shared_ptr<T> ptr(new T()); //引用計數(shù)加 1 (3) 使用make_shared方法 std::shared_ptr<T> p1=std::make_shared<T> (); //引用計數(shù)加 1 (4)復制構(gòu)造函數(shù) std::shared_ptr<T> ptr2(ptr1); // 這就是使用復制構(gòu)造函數(shù)的方法,,引用計數(shù)加 1 shared_ptr 可以當作函數(shù)的參數(shù)傳遞,,或者當作函數(shù)的返回值返回,這個時候其實也相當于使用復制構(gòu)造函數(shù),。 |
|