tr1模組是c++11正式誕生前夕,已經確定加入新標準的c++特性。vs2008算是c++11標準正式誕生前夕,對c++03和tr1標準支援的最好的乙個ide,是相當經典的一版,很多程式的開發和維護都還是使用vs2008。vs2008要使用tr1標準,需要安裝sp1補丁;在**中使用tr1標準,需要加入tr1::字首,如std::tr1::shared_ptr。符合c++11標準的編譯器則可以直接使用,比如std::shared_ptr。
vs2008sp1的tr1模組中,已經新增了諸如智慧型指標、正規表示式、雜湊表、隨機數生成器等特性。最常使用的智慧型指標是std::tr1::shared_ptr。
智慧型指標和普通指標在多型性上相似,都能從派生類指標自動隱式轉換到基類指標(向上轉換),不能自動從基類指標轉到派生類指標(向下轉換)。普通指標通過dynamic_cast函式實現向上向下轉換,智慧型指標通過dynamic_pointer_cast實現轉換。
例子如下:
struct a};
struct b:public a};
typedef std::tr1::shared_ptrbaseptr;
typedef std:: tr1::shared_ptrderivedptr;
void foo1(a* a)
void foo2(b* b)
void foo3(baseptr a)
void foo4(derivedptr b)
int main()
Qt 中使用智慧型指標
教研室的專案,就是用qt做個圖形介面能收發資料就可以了,但是建立資料管理類的時候需要各種new,delete,很小心了但是記憶體使用量在不斷開關程式之後函式會長,由於用的是gcc 4.7.所以好像沒有shared ptr可以用,上網查了一下原來qt也有智慧型指標。常用的有 qscopedpointe...
智慧型指標類模板(中) Qt中的智慧型指標
qt中的智慧型指標 qpointer 當其指向的物件被銷毀時,它會被自動置空 析構時不會自動銷毀所指向的物件 qsharedpointer 引用計數型智慧型指標 可以被自由的拷貝和賦值 當引用計數為0時才刪除指向的物件 include include using namespace std clas...
智慧型指標類模板(中) Qt中的智慧型指標
qt中的智慧型指標 qpointer 當其指向的物件被銷毀時,它會被自動置空 析構時不會自動銷毀所指向的物件 qsharedpointer 引用計數型智慧型指標 可以被自由的拷貝和賦值 當引用計數為0時才刪除指向的物件 include include using namespace std clas...