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