2011-11-15 86 views
-1

可能重複:
What are the barriers to understanding pointers and what can be done to overcome them?
What is a smart pointer and when should I use one?簡易指南使用指針

我學習C++,我有很多學習困難的指針,所以我用他們遍佈進行實驗並獲得關於如何使用它們的想法。不,我不明白如何使用它們的概念,但我不知道何時何地不使用它們 - 我很驚訝許多在線網站和書籍未能涵蓋如此重要的內容。

有人能給我一個非常流行的想法,說明何時以及爲什麼使用指針。 2.何時智能指針比普通指針更受青睞。

注意:雖然我知道&瞭解堆棧和堆分配的事情。

感謝您的幫助。

+1

指針是非常難以學習和理解的 - 儘管相關問題可能無法回答關於指針和特定智能指針的所有問題,但是您的問題也非常寬泛,並且無論如何都要關閉。我建議你先閱讀這個問題,然後再回來問任何**具體的問題,你仍然有關於指針的問題。 – Justin

+0

如果你是C++新手,你根本不應該使用任何原始指針。我敢肯定,你可能嘗試的任何初學者項目都可以用更好,更清潔的方式書寫,不需要任何指針或「新」。 –

+0

可能重複的第一個鏈接不能回答我的問題。我想要的東西就像是一個使用指針的情況列表,這是一個好主意,並且它毫無意義 - 這個答案只解釋了它們是如何工作的(儘管,我必須說這是一個很好的解釋)。 – BeginnerBob

回答

0

智能指針應該用在他們可以提供更好的內存管理的地方,並且現在是一個被廣泛使用的模式,被任何體面的C++程序員所認可。如果你沒有做任何以下的事情,你應該使用智能指針。

原始指針可用於某些智能指針不能使用的地方(原樣就是說,它們可以被修改)。你可以使用一個指針指向一個數組(儘管在C++中最好使用std::vector),你可以使用指向未定義的類的指針作爲類成員(使用前向聲明),你可以做指針運算等等。