c 智慧型指標

2021-06-18 02:18:18 字數 727 閱讀 8444

很久沒寫部落格了,不知道如何表達了,哈哈.

我先介紹一下深淺拷貝.

class copy ;

此時a.ptr和b.ptr指向同乙個物件,當我們delete a.ptr時 b.ptr所指向的物件已經不存在了,要是我們引用b.ptr指向的物件也就會出問題了.

深拷貝: 把a.ptr所指向的物件拷貝乙份給b.ptr  a,b就不指向同乙個物件了,delete a.ptr和delete b.ptr對對方都沒有影響.

智慧型指標也就派上用場了。

複製了n個相同的copy物件,每個物件裡面的ptr指標都指向同乙個物件,沒使用智慧型指標的時候,當我們刪除乙個pcd物件 那麼ptr對應的物件也將被刪除。

介紹一下智慧型指標

智慧型指標有乙個使用計數,當我們複製乙個物件的時候使用計數加1,刪除乙個物件的時候使用計數減1,當使用計數為0的時候我們刪除ptr指向的物件.

class ptr

~ptr(); };

class pcd

pcd(const pcd ©):data(copy.data),point(copy.point)

pcd& operator=()(const pcd©);

~pcd()

};pcd& pcd::operator=()(const pcd©)

複製建構函式每複製乙個物件,使用計數就增加1,賦值函式要考慮自身賦值的情況.

c 智慧型指標

auto prt 它是 它所指向物件的擁有者 所以當自身物件被摧毀時候,該物件也將遭受摧毀,要求乙個物件只有乙個擁有者,注意 auto prt 不能使用new 來分配物件給他 include include using namespace std template void bad print au...

c 智慧型指標

記得前不久有一次面試被問到智慧型指標的實現,當時對智慧型指標只是聽說但沒有了解過,就亂七八糟地說了一遍。今天寫了一遍智慧型指標,用了引用計數的概念。主要思想就是,用乙個新類對原本需要的型別進行了一層封裝,這個新類中儲存了原本的物件指標和乙個引用計數的指標,之所以全部用指標來儲存,就是因為會出現多個新...

C 智慧型指標

c 智慧型指標主要是在普通指標的基礎上封裝了一層,使得使用者對指標的使用更加方便和放心,在使用的過程中不用擔心指標因為釋放問題而導致的異常。在c 11中,智慧型指標主要有三種 shared ptrptr,unique ptrptr,weak ptrptr shared ptrptr的初始化可以通過以...