C++ //练习 13.27 定义你自己的使用引用计数版本的HasPtr。

C++ Primer(第5版) 练习 13.27

练习 13.27 定义你自己的使用引用计数版本的HasPtr。

环境:Linux Ubuntu(云服务器)
工具:vim

 

代码块
class HasPtr{
    public:
    HasPtr(const string &s = string()): ps(new string(s)), i(0), use(new size_t(1)) {}
    HasPtr(const HasPtr &s): ps(s.ps), i(s.i), count(s.use) { ++*count; }
    HasPtr& operator= (const HasPtr &s);
    ~HasPtr();

    private:
    string *ps;
    int i;
    size_t *count;
};

HasPtr::~HasPtr(){
    if(--*count == 0){
        delete ps;
        delete count;
    }
}

HasPtr& HasPtr::operator= (const HasPtr &s){
    ++*s.count;
    if(--*count == 0){
        delete ps;
        delete count;
    }
    ps = s.ps;
    i = s.i;
    count = s.count;
    return *this;
}

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 14:14:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 14:14:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 14:14:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 14:14:02       20 阅读

热门阅读

  1. Kylin 使用心得

    2024-04-24 14:14:02       14 阅读
  2. Kotlin语法入门-自定义注解(7)

    2024-04-24 14:14:02       13 阅读
  3. 建造者模式

    2024-04-24 14:14:02       13 阅读
  4. GB/T 22271.2-2021聚甲醛POM模塑和挤出材料检测

    2024-04-24 14:14:02       15 阅读
  5. 去掉 pom依赖里引入模块 不要的 @Bean @Configuration

    2024-04-24 14:14:02       13 阅读
  6. Ant-design中表单多级对象做嵌套表单校验

    2024-04-24 14:14:02       14 阅读
  7. springboot @Validated的概念以及实战

    2024-04-24 14:14:02       16 阅读