C++智能指针:auto |
您所在的位置:网站首页 › 指针ptr怎么读 › C++智能指针:auto |
指针,相信大家并不陌生。无论是我们在进行查看内存还是在修改字符串,我们都会用到指针。 最常见的情况则是我们使用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 |