您的位置:首页 > 编程语言 > C语言/C++

【c++】模拟实现boost库下的scoped_array

2015-07-17 14:38 375 查看
//模拟实现boost库下的scoped_array

#include <iostream>
#include <assert.h>
using namespace std;

template <class T>
class scoped_array
{
private:
T * px;

scoped_array(scoped_array const &);
scoped_array& operator=(scoped_array const &);

void operator==(scoped_array const &)const;
void operator!=(scoped_array const &)const;
public:
scoped_array(T * p = 0) :px(p)
{}
~scoped_array()
{
delete[] px;
}

void reset(T * p = 0)
{
assert(p == 0 || p != px);
scoped_array<T>(p).swap(*this);
}

T& operator[](int i)const
{
assert(px != 0);
assert(i >= 0);
return px[i];
}

T* get()const
{
return px;
}

void swap(scoped_array & b)
{
T *tmp = px;
px = b.px;
b.px = tmp;
}
};

int main()
{
int *arr = new int[100];
arr[0] = 50;
scoped_array<int> ptr(arr);
cout << ptr[0] << endl;
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: