首页 > 其他分享 >引用计数

引用计数

时间:2023-02-26 17:36:47浏览次数:24  
标签:nullptr CBuff pBuff char 计数 szBuff 引用 pnCount

 1 #include <iostream>
 2 class CBuff
 3 {
 4 public:
 5     CBuff(const char* szBuff)
 6     {
 7         Init();
 8         SetBuff(szBuff);
 9     }
10     void SetBuff(const char* szBuff)
11     {
12         ReduceCount();
13 
14         m_pBuff = new char[strlen(szBuff) + 1];
15         m_pnCount = new int(1);
16         strcpy(m_pBuff, szBuff);
17     }
18     CBuff(const CBuff& buff)
19     {
20         m_pBuff = buff.m_pBuff;
21         m_pnCount = buff.m_pnCount;
22         (*m_pnCount)++;
23     }
24     ~CBuff()
25     {
26         ReduceCount();
27     }
28 private:
29     void ReduceCount()
30     {
31         if (m_pBuff==nullptr)
32         {
33             return;
34         }
35         (*m_pnCount)--;
36         if (*m_pnCount==0)
37         {
38             delete[]m_pnCount;
39             delete[]m_pBuff;
40             m_pBuff = nullptr;
41             m_pnCount = nullptr;
42         }
43     }
44     void Init()
45     {
46          m_pBuff=nullptr;
47          m_pnCount = nullptr;
48     }
49     char* m_pBuff;
50     int* m_pnCount;
51 };
52 
53 
54 int main()
55 {
56 
57     CBuff buff1("hello");
58     CBuff buff2 = buff1;
59     CBuff buff3 = buff2;
60     buff1.SetBuff("pp");
61 
62     return 0;
63 }

 

标签:nullptr,CBuff,pBuff,char,计数,szBuff,引用,pnCount
From: https://www.cnblogs.com/yewu1/p/17157121.html

相关文章

  • Springboot 中 主模块引用其他模块的Controller url路径总是不生效
    Springboot中主模块引用其他模块的Controllerurl路径总是不生效其他无关影响:主要有springsecurity 有权限过滤器影响、还有token的影响。找问题方法:使用了对比两个......
  • 左值、右值、左值引用和右值引用
    左值左值为一个非临时性对象的表达式,通常为定义的带名字的变量。右值相对于左值,右值是临时性对象的表达式。左值引用以int基本类型为例,左......
  • Java 8 Lambda 方法引用 简记
    Lambda表达式以及方法引用Java8的新特性笔记,重点讲的是:Lambda函数式接口方法引用Steam流Lambda表达式Lambda的基础使用不记录,记录JDK8实战书上的一些底......
  • 2572. 无平方子集计数(状态压缩dp)
    题目https://leetcode.cn/problems/count-the-number-of-square-free-subsets/思路类似01背包优化的状态压缩dp(误)首先按照数字分出是否有平方子集,然后再计数cnt[x]......
  • java int 引用传递
    integer是final,不可变的,所以也无法实现引用传递的功能。解决方案int[]做一个包装类org.apache.commons.lang.mutable.MutableIntjava.util.concurrent.atomic.Atomi......
  • c++引用与结构
    引用非常适合用于结构和类,使用结构引用参数的方式与使用基本变量引用相同,只需在声明结构参数时使用引用运算符&即可。structfree_throws{stringname;intmode;in......
  • 带标号弱连通DAG计数
    带标号弱连通DAG计数前言:前段时间做到了一个无向图边定向的题,就一直没搞懂其中的容斥,今天终于弄懂了。题意:对弱连通带标号的简单DAG计数,\(n\leq10^5\)。“弱连通”......
  • 引用、强制类型转换、临时变量的关系
    doublea=9.9;int&b=a;很明显上面的代码编译会报错,C++引用时不能跨数据类型。doublea=9.9;int&b=(int)......
  • 值类型、引用类型的区别
    值类型存放在栈上,引用类型存放在堆上,结构体是值类型,类是引用类型,string是引用类型区别:值类型通常被分配在栈上,它的变量直接包含变量的实例,使用效率比较高。引用类型......
  • 一文理解JVM的程序计数器(PC)
    目录1功能演示2跳转、循环等执行的执行原理3关于PC的面试题JVM中的程序计数寄存器(ProgramCounterRegister)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的......