簡體   English   中英

C ++中的原始指針

[英]Raw Pointer in C++

我有一個C ++類,並且有指向對象的原始指針。 指向對象的指針將傳遞給該函數。 問題是底層函數可能需要有時將指針存儲在STL容器中,以后將在其中使用指向對象的指針。 如果我沒有使用shared_ptr,我正在考慮向該類添加一個bool標志,該標志指示該函數的調用者是否負責刪除對象內存。 可以嗎

謝謝。

凌亂。 而且還有很多潛在的錯誤,這些錯誤將使您在星期六的午夜過后仍然可以正常工作。

對資源所有權要保持清楚和一致。 向量要么擁有指針,要么某個特定的函數擁有指針,或者智能指針擁有指針。 這些語義上的任何混合,最終都會導致您在深夜時把頭發扯掉。

最好的解決方案通常是使用引用計數的智能指針。 (您可能已經很清楚了,您不能使用std::auto_ptr )除非如此,否則請創建一個類,其唯一的目的是分配,釋放和授予對向量的包含指針的訪問權限。 需要包含對象的任何函數都將通過您的經理類來訪問它們。

STL容器幾乎可以肯定會復制您插入到其中的對象的副本。 從容器中取出對象時,該對象將被破壞。

如果默認的復制構造函數不足(即,您需要對對象進行深層復制),則需要確保實現自己的版本,該版本可以正確執行復制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM