#includeusing namespace std;// 定義僅由hasptr類使用的u_ptr類,用於封裝使用計數和相關指標
// 這個類的所有成員都是private,我們不希望普通使用者使用u_ptr類,所以它沒有任何public成員
// 將hasptr類設定為友元,使其成員可以訪問u_ptr的成員
class u_ptr
~u_ptr() };
class hasptr
// 賦值建構函式:賦值成員並將使用計數加1
hasptr(const hasptr& orig) : ptr(orig.ptr), val(orig.val)
// 賦值操作符 hasptr& hasptr::operator = (const hasptr &rhs)
hasptr& operator=(const hasptr&rhs);
// 析構函式:如果計數為0,則刪除u_ptr物件
~hasptr()
// 獲取資料成員
int *get_ptr() const
int get_int() const
// 修改資料成員
void set_ptr(int *p) const
void set_int(int i)
// 返回或修改基礎int物件
int get_ptr_val() const
void set_ptr_val(int i)
private:
u_ptr *ptr; //指向使用計數類u_ptr
int val;
};hasptr& hasptr::operator = (const hasptr &rhs) //注意,這裡賦值操作符在減少做運算元的使用計數之前使rhs的使用技術加1,從而防止自我賦值
c 智慧型指標的問題 智慧型指標初探(一)
為什麼要有智慧型指標 在c 中,動態記憶體的管理一般是用一對運算子完成的 new和delete。new 在動態記憶體中為物件分配一塊空間並返回乙個指向該物件的指標。delete 指向乙個動態獨享的指標,銷毀物件,並釋放與之關聯的記憶體。使用new和delete動態記憶體管理經常會出現問題 忘記釋放記...
C 智慧型指標的問題
如何回答c 面試中關於智慧型指標的問題?1 什麼是智慧型指標?2 分析下常見的智慧型指標有哪些?3 實現乙個智慧型指標唄?沒具體說寫哪個,建議預設寫 unique ptr 1 答 智慧型指標 smart pointer 是儲存指向動態分配 堆 物件指標的類,用於生存期控制,能夠確保自動正確的銷毀動態...
智慧型指標(二)智慧型指標的方法和構造
預設構造shared ptrsp和unique ptrup 指標構造shared ptrsp t 和unique ptrup t 這裡預設為explicit 帶刪除器的構造shared ptrp q,d q這裡可以內建指標和智慧型指標,同時將用d析構器代替delete。所以定義了這麼乙個帶刪除器的建...