前言
在上一則教程中,敘述了當(dāng)處于多線程環(huán)境下時,智能指針?biāo)赶虻囊糜嫈?shù)可能會因為此導(dǎo)致引用計數(shù)出問題,因此,引入了
原子操作的相關(guān)概念,換句話說,這種操作也被稱之為是輕量級指針,那對于這種輕量型指針又會存在什么問題呢?本節(jié)內(nèi)容將著重敘述這個問題。另外需要注意的是,關(guān)于最近幾次的內(nèi)容互相之間都是息息相關(guān)的,需要結(jié)合上下文進行理解,同時,因為涉及到的代碼比較多,如果哪里沒有說明白的地方,需要下載對應(yīng)的源代碼進行對照分析。好了,接下來,進入本次內(nèi)容的分享。
強指針
在說明
強指針這個概念之前,我們先從代碼的角度慢慢分析,首先,假設(shè),我們現(xiàn)在有如下兩個智能指針:
image-20210313102009432如上圖所示,A 指針指向了 B,B 指針指向了 A,這樣會導(dǎo)致什么后果呢,我們看如下所示的代碼,在上一節(jié)輕量級指針的基礎(chǔ)上,我們構(gòu)建這樣的?
Person
類代碼:
class?Person?:?public?LightRefBase
{
private:
????sp?father;
????sp?son;
public:
????Person()
????{
????????cout?<"Person()"?<endl;
????}
????~Person()
????{
????????cout?<"~Person()"?<endl;
????}
????void?setFather(sp?