智慧型指標擁有權問題

2021-04-13 09:18:53 字數 529 閱讀 5223

1.深拷貝問題在於對於乙個指向基類的指標採用深拷貝或者物件本身的拷貝函式不確定的時候,問題變的視乎極難處理。

2.臨寫拷貝同樣也存在問題,它對呼叫者提出了比較高的要求,因為指標本身不知道是否執行臨寫拷貝。

3.引用計數是好,可以這也有多個策略。

a.為了指向引用計數段,指標大小翻倍,會導致空間佔用量爬公升。而且,必須在棧上儲存計數器,分配這個小物件的c++分配器的效率也不盡人意,而且在棧空間緊缺的時候這會很頭疼。

b.你可以使用**層,在**層儲存這個計數器,但是效率讓人不盡滿意。

c.採用侵入式計數,但這要求物件被精心設計,當物件設計不合理或你無法決定pointee物件時,該方法毫無幫助,但如果你可以定製pointee,這個策略是相當不錯的乙個。

3.引用鏈結,所有指向同乙個物件的指標做鍊錶,這樣不占用棧,可以體積稍大。

4.摧毀式拷貝,它的問題在於你可能不經意的摧毀了指標,譬如把它用於一次函式呼叫引數。

是的,智慧型指標是一場交易,明白各個形式的弱點很重要,你無法避免乙個問題的時候,讓這個問題不會影響你是個不錯的選擇。

Qt物件樹和擁有權

1 qt智慧型指標和qobject物件樹系統 父子系統 結合使用出現的問題 2 qt學習筆記 六 之簡析物件樹 一 物件模型 標準c 物件模型可以在執行時非常有效的支援物件正規化 object paradigm 但是它的靜態特性在一些問題領域中不夠靈活。圖形使用者介面程式設計不僅需要執行時的高效性,...

QT中的物件樹與物件擁有權

qobjects以物件樹組織它們自己。當你建立乙個qobject以另乙個物件作為其父物件時,這個qobject被加入到其父物件的children 列表中,當父物件對被刪除時,其子物件也會被刪除。實踐表明這種組織方式非常適合gui物件的特點與需要。舉例來說,乙個qshortcut 鍵盤快捷鍵 是其相關...

c 智慧型指標的問題 智慧型指標初探(一)

為什麼要有智慧型指標 在c 中,動態記憶體的管理一般是用一對運算子完成的 new和delete。new 在動態記憶體中為物件分配一塊空間並返回乙個指向該物件的指標。delete 指向乙個動態獨享的指標,銷毀物件,並釋放與之關聯的記憶體。使用new和delete動態記憶體管理經常會出現問題 忘記釋放記...