需要注意:auto_ptr 类可以用于管理由 new 分配的单个对象,但是无法管理动态分配的数组(我们通常不会使用数组,而是使用 vector 代替数组)。auto_ptr 在拷贝和赋值的时候有不寻常的行为,因此 auto_ptrs 不能被保存在 stl 的容器中。当 auto_ptr 离开了自己的...
分类:
其他好文 时间:
2015-07-23 23:35:39
阅读次数:
211
1, auto_ptr类auto_ptr是一个模板类,定义如下:template class auto_ptr {...};它存储的是一个指向Type的指针。顾名思义,auto_ptr是一种智能指针,它包含一个动态分配内存的指针,并在它生命周期结束的时候,销毁包含的指针所指向的内存。 例1: ...
分类:
其他好文 时间:
2015-07-23 23:32:14
阅读次数:
214
1. 智能指针(Smart Pointer)i.是存储指向动态分配(堆)对象指针的类ii.在面对异常的时候格外有用,因为他们能够确保正确的销毁动态分配的对象iii.RAII类模拟智能指针,见备注2. C++11提供了以下几种智能指针,位于头文件,它们都是模板类i.std::auto_ptr(复制/赋...
分类:
编程语言 时间:
2015-07-21 22:07:28
阅读次数:
212
auto_ptr是一个模板类,用于管理动态内存分配。请看下面的函数:void remodel (string& str){ string * ps = new string(str); ... str = *ps; return;}上述代码存在这样一个缺陷:没有收回函数中分配的内存。解决方法...
分类:
其他好文 时间:
2015-07-17 11:53:01
阅读次数:
120
//最挫的智能指针。
#include
using namespace std;
template
class my_auto_ptr
{
public:
my_auto_ptr(Type* p = NULL) :ptr(p){}
my_auto_ptr(const my_auto_ptr& ma)
{
ptr...
分类:
编程语言 时间:
2015-07-11 12:15:23
阅读次数:
168
使用一个类来代理另一个类,如智能指针auto_ptr,对智能指针的操作,实际上是对代理的指针的操作#include using namespace std;templateclass auto_ptr{public: explicit auto_ptr(T * p = 0){ p...
分类:
其他好文 时间:
2015-07-10 00:06:25
阅读次数:
149
1、容器元素类型
C++中大多数数据类型可以作为容器的元素类型。容器元素类型必须满足一下两个条件:支持赋值和复制操作。
所以没有元素是引用类型的容器,同时IO对象和auto_ptr也不能作为容器的元素类型。
2、vector容器的自增长
vector容器中存储的元素在内存中是连续存储的。假如容器中没有空间容纳新元素,此时由于元素必须连续存储以便索引访...
分类:
编程语言 时间:
2015-07-08 16:35:29
阅读次数:
142