适合具备 C 语言基础的 C 教程(十五)
扫描二维码
随时随地手机看文章
前言
在上一则教程中,叙述了当处于多线程环境下时,智能指针所指向的引用计数可能会因为此导致引用计数出问题,因此,引入了原子操作的相关概念,换句话说,这种操作也被称之为是轻量级指针,那对于这种轻量型指针又会存在什么问题呢?本节内容将着重叙述这个问题。另外需要注意的是,关于最近几次的内容互相之间都是息息相关的,需要结合上下文进行理解,同时,因为涉及到的代码比较多,如果哪里没有说明白的地方,需要下载对应的源代码进行对照分析。好了,接下来,进入本次内容的分享。强指针
在说明强指针这个概念之前,我们先从代码的角度慢慢分析,首先,假设,我们现在有如下两个智能指针:如上图所示,A 指针指向了 B,B 指针指向了 A,这样会导致什么后果呢,我们看如下所示的代码,在上一节轻量级指针的基础上,我们构建这样的Person
类代码:class Person : public LightRefBase
{
private:
sp father;
sp son;
public:
Person()
{
cout << "Person()" << endl;
}
~Person()
{
cout << "~Person()" << endl;
}
void setFather(sp