C++智能指针:auto

您所在的位置:网站首页 指针ptr怎么读 C++智能指针:auto

C++智能指针:auto

2024-06-17 01:59| 来源: 网络整理| 查看: 265

指针,相信大家并不陌生。无论是我们在进行查看内存还是在修改字符串,我们都会用到指针。

最常见的情况则是我们使用malloc或者new申请到了一块内存,然后用一个指针来保存起来。我们都知道有内存的申请那就必须要对它进行释放的处理,否则会造成最严重的后果——内存泄漏。一个或者两个申请的内存我们或许不会忘记去释放,但是如果成千上万行代码,你还能记得住哪个释放了哪个没有释放吗?

而智能指针就是为了解决这个问题而产生的。最开始智能指针是在boost库中的,随着时间发展现在已经成为了C11的特性。(虽然我们本篇要介绍的最基础的auto_ptr在C++11中已经被unique_ptr替代了。。)

 

智能指针的基本原理

智能指针其实是一个类,可以通过将普通指针作为参数传入智能指针的构造函数实现绑定。只不过通过运算符重载让它“假装”是一个指针,也可以进行解引用等操作。既然智能指针是一个类,对象都存在于栈上,那么创建出来的对象在出作用域的时候(函数或者程序结束)会自己消亡,所以在这个类中的析构函数中写上delete就可以完成智能的内存回收。

 

Auto_ptr详解

使用时,需要包含头文件:memory。

auto_ptr,作为智能指针的始祖,能基本实现我们所期望的功能。而且设计简单源码易懂,虽然缺陷众多,但作为了解智能指针的研究对象还是十分合适的。

首先我们先来写一个测试类用于分析。

#include #include using namespace std; class Test { public: Test(int param = 0) //调用时,可以指定是第几个对象。默认第0个 { num = param; cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3