前言
在上一則教程中,敘述了當(dāng)處于多線程環(huán)境下時(shí),智能指針?biāo)赶虻囊糜?jì)數(shù)可能會(huì)因?yàn)榇藢?dǎo)致引用計(jì)數(shù)出問(wèn)題,因此,引入了
原子操作的相關(guān)概念,換句話說(shuō),這種操作也被稱之為是輕量級(jí)指針,那對(duì)于這種輕量型指針又會(huì)存在什么問(wèn)題呢?本節(jié)內(nèi)容將著重?cái)⑹鲞@個(gè)問(wèn)題。另外需要注意的是,關(guān)于最近幾次的內(nèi)容互相之間都是息息相關(guān)的,需要結(jié)合上下文進(jìn)行理解,同時(shí),因?yàn)樯婕暗降拇a比較多,如果哪里沒(méi)有說(shuō)明白的地方,需要下載對(duì)應(yīng)的源代碼進(jìn)行對(duì)照分析。好了,接下來(lái),進(jìn)入本次內(nèi)容的分享。
強(qiáng)指針
在說(shuō)明
強(qiáng)指針這個(gè)概念之前,我們先從代碼的角度慢慢分析,首先,假設(shè),我們現(xiàn)在有如下兩個(gè)智能指針:
image-20210313102009432如上圖所示,A 指針指向了 B,B 指針指向了 A,這樣會(huì)導(dǎo)致什么后果呢,我們看如下所示的代碼,在上一節(jié)輕量級(jí)指針的基礎(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?