智能指针
文章平均质量分 77
Anurmy
这个作者很懒,什么都没留下…
展开
-
boost库scoped_array智能指针实现
1 scoped_array智能指针特点与scoped_ptr不同的是scoped_array智能指针管理new出来的数组空间,同样的是智能指针所管理的空间不能转移,但是可以通过成员方法reset让它去管理新的内存空间。在使用时要注意以下几点1、构造函数接受的指针p必须是new[]的结果,而不能是new表达式的结构2、没有*、->操作符重载(但是可以扩展)3、析构函数使用delete[]释放资源,而不是delete4、提供operator[]操作符重载,可以向普通数组一样用下标访问元素2原创 2020-12-26 18:19:15 · 194 阅读 · 2 评论 -
boost版scoped_ptr智能指针实现
1 scoped_ptr智能指针特点与auto_ptr智能指针不同的是,scoped_ptr智能指针所管理的空间不能转移,即不能通过拷贝或赋值将原先管理的空间交由新的智能指针管理,因此在实现时要将拷贝构造和赋值声明为私有。另外,scoped_ptr智能指针所管理的空间虽然不能转移,但是可以通过成员方法reset让它去管理新的内存空间,这时要注意原来所管理空间的释放,因为不能转移出去其他的智能指针管理,所以reset的实现一定要保证原来空间的释放。2 scoped_ptr智能指针实现#define _C原创 2020-12-26 17:31:07 · 114 阅读 · 0 评论 -
vs版本auto_ptr智能指针实现
1 vs版本auto_ptr智能指针实现vs版本auto_ptr智能指针解决了vc版的缺点,即智能指针通过拷贝或赋值转让空间后,不能再通过原来的智能指针去访问失去管理权的空间,在空间管理权所属方面与vc版不同的是,vs版的实现是通过使成员指针__Ptr为空表示失去空间管理权,而vc版的实现是通过成员_Owns为假时表示失去空间管理权。#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#inc原创 2020-12-26 15:30:00 · 323 阅读 · 0 评论 -
vc版auto_ptr智能指针实现
1 vc版auto_ptr智能指针实现#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>//#include<memory>#include <vld.h>using namespace std;template<class _Ty>class AutoPtr{public: // 默认构造函数,_Ptr为空时,没有任何空间的管理权 Aut原创 2020-12-26 00:01:41 · 122 阅读 · 0 评论