關於智慧型指標使用的一些注意點

2021-09-11 00:28:04 字數 404 閱讀 2869

1.盡量使用unique_ptr而非shared_ptr

原因:1.unique_ptr可以在需要共享物件時轉化為shared_ptr,但shared_ptr卻不能轉化為unique_ptr;

2.shared_ptr內部維護著乙個引用計數器以及乙個控制塊,實現比unique_ptr更為複雜,且需要消耗更多的資源;

3.使用shared_ptr可能並非出於本意,卻導致共享物件被修改;

2.謹慎使用shared_ptr內部的shared_ptr物件

在shared_ptr內部定義乙個shared_ptr物件時,當當前的shared_ptr物件被釋放時,內部的引用計數降為1,並不會呼叫物件的析構函式。因此,在設計類時,如果不需要物件的所有權,也不想指定物件的宣告週期時,考慮使用weak_ptr代替shared_ptr;

指標的一些注意點

指標是c語言最強大,最複雜的特性。在使用的時候一定要注意。1 在使用指標前 指對指標進行解引用 一定要對指標進行初始化。否則會發生段違例錯誤。如 int a a 12 從語言層面看,好似並沒有錯誤,但是a指標並沒有被初始化,從而無法找到該變數到底指向的是哪個位址,將12賦值給乙個未知位址會引發段違例...

運用智慧型指標的一些思路

首先,智慧型指標是模擬真實指標,但是負責管理資源釋放的類。第一,為何要用指標,而不是直接用物件。指標是實現多型的基礎,同時具備靈活繫結性的一種型別 引用也可以實現多型,但是不具備靈活繫結性。而且你不能在堆中申請一塊記憶體,然後繫結,然後他就乖乖幫你釋放,做不到這種效果,所以他並不比指標更強大,卻很容...

關於C 智慧型指標的一點認識

背景 預設的c 拷貝與賦值建構函式實現的是值拷貝傳遞。當類的資料成員為指向堆上的指標時,值拷貝會使多個類的指標指向同一塊記憶體。當其中乙個類釋放這塊記憶體時,會照成其他類的這個指標空懸,從而引來風險。智慧型指標是用來解決這類問題的方法。它最終的目的是讓多份指標安全地指向同一塊記憶體。要做到這一點,這...