C++11新特性【智能指针与匿名函数】

目录

前言

智能指针

shared_ptr共享的智能指针

shared_ptr的基本用法

使用shared_ptr要注意的问题

weak_ptr弱引用的智能指针

weak_ptr的基本用法

weak_ptr返回this指针

weak_ptr解决循环引用问题

weak_ptr使用注意事项

匿名函数lambda

匿名函数lambda

捕获列表

匿名函数的简写


前言

  本文重点是C++11智能指针与匿名函数

  本专栏知识点是通过零声教育的线上课学习,进行梳理总结写下文章,对c/c++linux课程感兴趣的读者,可以点击链接 C/C++后台高级服务器课程介绍 详细查看课程的服务。

智能指针

C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己 管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的 概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常 时内存泄露等问题等,使用智能指针能更好的管理堆内存。

C++里面的四个智能指针: auto_ptr,** unique_ptr,shared_ptr, weak_ptr** 其中后三个是C++11支持, 并且第一个已经被C++11弃用。

shared_ptr共享的智能指针

std::shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。再最后一个shared_ptr析 构的时候,内存才会被释放。

shared_ptr共享被管理对象,同一时刻可以有多个shared_ptr拥有对象的所有权,当最后一个 shared_ptr对象销毁时,被管理对象自动销毁。

简单来说,shared_ptr实现包含了两部分,

一个指向堆上创建的对象的裸指针,raw_ptr

一个指向内部隐藏的、共享的管理对象。share_count_object

shared_ptr的基本用法

1. 初始化

通过构造函数、std::shared_ptr辅助函数和reset方法来初始化shared_ptr,代码如下:

std::shared_ptr p1(new int(1));
std::shared_ptr p2 = 

你可能感兴趣的:(c++,开发语言)