智能指针的简单用法 您所在的位置:网站首页 指针的简单用法图解 智能指针的简单用法

智能指针的简单用法

2023-09-06 06:56| 来源: 网络整理| 查看: 265

std::shared_ptr

首先来介绍shared_ptr,包含在memory头文件中,它的存在,使得更容易也更安全地使用动态内存。

智能指针也是模板,常用其初始化方式有以下几种。初始化方式:

1)默认初始化方式。

std::shared_ptr p1; // 指向空string std::shared_ptr p2; // 指向int的list

2)使用make_shared函数模板,make_shared声明如下:(推荐)

template shared_ptr make_shared (Args&&... args);

从声明可以看出其用法,必须指定想要创建的对象的类型,例如:

// 指向一个值为3的int的shared_ptr std::shared_ptr p3 = std::make_shared(3); // 指向值为"9999"的string std::shared_ptr p4 = std::make_shared(4, '9'); // 更简洁的方式,使用auto保存返回结果,构造一个指向空vector auto p5 = std::make_shared();

表示使用括号内参数来构造给定的类型对象。

3) 结合new,直接初始化形式

std::shared_ptr p2(new int(4)); // 必须显示初始化,不支持隐式转换。

shared_ptr会根据其所指向的对象的引用计数是否为0来决定是否销毁该对象,,并释放所占用的内存。注意不要混合使用普通指针和智能指针,若将一个智能指针绑定到一个普通指针时,我们就把内存的责任交给share_ptr来处理,就不要再使用普通指针来访问内存了。

4) reset方式 

std::shared_ptr sp2; sp2.reset(new int(3));

std::weak_ptr

std::weak是对对象的弱引用,是一种不控制对象生存期的指针,只是用于访问对象,通俗地说就是当没有shared_ptr之类指针指向对象时,即使有weak_ptr指向对象,对象依然会被释放。

初始化代码示例:

#include #include int main () { // 构建一个shared_ptr auto sp = std::make_shared(42); std::cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有