適合具備 C 語言基礎的 C 教程(十五)
時間:2021-08-19 15:49:33
手機看文章
掃描二維碼
隨時隨地手機看文章
[導讀]前言在上一則教程中,敘述了當處于多線程環(huán)境下時,智能指針所指向的引用計數(shù)可能會因為此導致引用計數(shù)出問題,因此,引入了原子操作的相關概念,換句話說,這種操作也被稱之為是輕量級指針,那對于這種輕量型指針又會存在什么問題呢?本節(jié)內(nèi)容將著重敘述這個問題。另外需要注意的是,關于最近幾次的內(nèi)...
前言
在上一則教程中,敘述了當處于多線程環(huán)境下時,智能指針所指向的引用計數(shù)可能會因為此導致引用計數(shù)出問題,因此,引入了原子操作的相關概念,換句話說,這種操作也被稱之為是輕量級指針,那對于這種輕量型指針又會存在什么問題呢?本節(jié)內(nèi)容將著重敘述這個問題。另外需要注意的是,關于最近幾次的內(nèi)容互相之間都是息息相關的,需要結合上下文進行理解,同時,因為涉及到的代碼比較多,如果哪里沒有說明白的地方,需要下載對應的源代碼進行對照分析。好了,接下來,進入本次內(nèi)容的分享。強指針
在說明強指針這個概念之前,我們先從代碼的角度慢慢分析,首先,假設,我們現(xiàn)在有如下兩個智能指針:如上圖所示,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?