這幾天又回過頭看了下《c++primer》上關於指標管理的內容。第一次看的時候不是看的非常明白,通過這一次的複習,對指標管理的了解進一步加深了。
c++類管理指標成員的方法總的來說有三種:採用常規的指標型行為管理;採用智慧型指標方式管理;採取值型行為管理。三種方法各有特點:
首先,採用常規指標行為管理:
這種管理方法簡單,但是缺點在於不能很好的控制指標,任何類物件的指標成員都能直接操作指標所指的物件。假如定義了乙個類的物件a,通過複製a定義了另外乙個物件b,a和b兩個物件的指標成員不同,但是指標指向的物件是乙個。這樣就產生了問題,假如通過b的指標成員刪除了其指向的物件,那麼a的指標成員指向的物件也被刪除了,因為二者的指標成員共享乙個物件,這樣a的指標成員就成了懸垂指標了。ps:大致就這樣吧?
接著,採用智慧型指標方式管理:
採用智慧型指標方式管理指標成員的類,其指標成員不直接指向物件,而是通過引入另外乙個叫做計數類的夥伴類(計數類有乙個指標成員和乙個計數變數),該類的指標成員是乙個計數類型別的指標。假如有乙個類myclass的物件a,它有乙個計數類的指標成員,計數類的工作內容是,通過複製a定義另乙個物件b,複製一次a的計數類指標指向的計數變數就自增1;通過b給a賦值,則b的使用計數自增1,而a的使用計數自減1.這樣就能很好的控制指標,使用計數能很好的記錄指標所指物件被使用的次數。在使用次數非零的時候物件是不能被刪除的,達到這個功能使用的是析構函式用有判斷使用計數的函式,當使用計數為0的時候會刪除指標。
最後,採取值型行為:
這種方法主要是每次複製複製的是物件而非指標,這樣每次複製產生了新的物件也就產生了新的成員副本,每個類物件管理自己的成員,各不相干。
大致就是這樣的。
C 管理指標成員
1 c 中一般採用下面三種方法之一管理指標成員 1 指標成員採取常規行為。這樣的類具有指標的所有缺陷 具有指標成員且使用預設複製建構函式和賦值操作符,無法避免懸垂指標 兩個物件的指標成員指向同一記憶體,刪除了其中乙個指標指向的記憶體時,另乙個指標將不再指向有效的記憶體空間 2 類可以實現所謂的 智慧...
c 記憶體管理 指標的用法
指標是記憶體能管理的重要組成部分。new和delete運算子提供了一種比自動變數和靜態變數更靈活的方法。它們管理了乙個記憶體池,這在c 中被稱為自由儲存空間 free store 或堆 heap 該記憶體池同用於靜態變數和自動變數的記憶體是分開的。new和delete讓您能夠在乙個函式中分配記憶體,...
c 類管理指標成員
c 程式設計提倡使用標準庫,乙個原因是標準庫大膽減少對指標的使用。但是許多程式是離不開指標的。包含指標的類需要特別注意複製控制,原因是複製指標時只複製指標中的位址,而不複製指標所指向的物件。這樣當把乙個物件複製給另乙個物件後,當改變乙個物件後,另乙個物件也會收到牽連。另外乙個物件釋放掉後,其指標已經...