先show乙個例項:
class father
~father(){}
virtual void fun();
class mother
~mother(){}
virtual void test(int a);
class son:publicfather ,public mother
~son(){}
void fun();
int _tmain(int argc,_tchar* argv)
這個程式編譯沒有問題,執行時崩潰。但是將mother的test函式前的virtual去掉時,執行結果才是正常的。從c++虛函式的角度,是不應該執行時崩潰的。不用智慧型指標,直接使用裸指標,執行時結果正常。如下:
int _tmain(int argc,_tchar* argv)
這從側面說明了智慧型指標的這個bug.
編寫乙個智慧型指標類
比起一般指標,智慧型指標會自動地管理記憶體 釋放不需要的記憶體 而不需要程式設計師去操心。它能避免迷途指標 dangling pointers 記憶體洩漏 memory leaks 分配失敗等情況的發生。智慧型指標需要為所有例項維護乙個引用計數,這樣才能在恰當的時刻 引用計數為0時 將記憶體釋放。i...
自己實現乙個智慧型指標
要實現乙個智慧型指標主要實現下面幾個函式 1 建構函式 2 拷貝建構函式 3 析構函式 4 賦值運算子函式 5 獲取引用計數函式 重點 1 構造,拷貝構造 1 2 析構函式會使引用計數 1.3 賦值運算子會使之前的引用計數 1。使新賦值過來的引用計數 1 include template class...
智慧型指標(一)
c 程式設計中使用堆記憶體是非常頻繁的操作,堆記憶體的申請和釋放都由程式設計師自己管理。管理是麻煩點 e.g.手動釋放等 但無傷大雅,勉強可以接受 但要命的是,容易出問題 為了解決該問題,c 11 引入智慧型指標概念使記憶體管理變得更為方便,且不易出錯 智慧型指標包含在標頭檔案中,包括 shared...