智慧型指標的問題(現階段不懂呢)

2022-05-15 06:18:43 字數 1027 閱讀 8679

#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。所以定義了這麼乙個帶刪除器的建...