您当前的位置: 首页 >  ar

惊鸿一博

暂无认证

  • 2浏览

    0关注

    535博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++_弱引用 强引用_weak_ptr/share_ptr

惊鸿一博 发布时间:2021-05-18 20:03:44 ,浏览量:2

目录

1 为什么有引用计数

2 强引用

3 弱引用

1 为什么有引用计数

C++中存在两种语义:值语义(value sematics)和对象语义(object sematic),对象语义也可以叫做引用语义(reference sematics)。

  • 值语义,指的是对象的拷贝与原对象无关,就像拷贝int一样,C++的常用类型数据等都是值语义。
  • 对象语义,指的是面向对象意义下的对象,是禁止拷贝的。

在设计一个类的时候该类是否可以被拷贝(即具备拷贝构造函数),取决于拷贝后的语义是否成立,比如一个Thread类,拷贝后系统中并不会启动另外一个线程,所以拷贝是禁止的。同样类似于Employee雇员类也是。     这么设计起码有两个好处:

  •     1. 语义合理,有些对象复制是不符合常理的
  •     2. 节省内存
2 强引用

当对象被创建时,计数为1;每创建一个变量引用该对象时,该对象的计数就增加1;当上述变量销毁时,对象的计数减1,当计数为0时,这个对象也就被析构了。 强引用计数在很多种情况下都是可以正常工作的,但是也有不凑效的时候,当出现循环引用时,就会出现严重的问题,以至于出现内存泄露,如下代码:

#include   
#include   
#include   
#include   
 
class parent; 
class children; 
 
typedef boost::shared_ptr parent_ptr; 
typedef boost::shared_ptr children_ptr; 
 
class parent 
{ 
public: 
    ~parent() { std::cout             
关注
打赏
1663399408
查看更多评论
0.0376s