64,662
社区成员
发帖
与我相关
我的任务
分享
template<class T> class Array
{
public:
explicit Array(): data(0), sz(0) {}
explicit Array(unsigned size)
:sz(size), data(new T[size]) {}
~Array()
{
if (NULL != data)
{
delete[] data;
data = NULL;
}
}
const T& operator[](unsigned n) const
{
if (n >= sz || data == 0)
{
throw "Array subscript out of range";
}
return data[n];
}
T& operator[](unsigned n)
{
if (n >= sz || data == 0)
{
throw "Array subscript out of range";
}
return data[n];
}
operator const T*() const
{
return data;
}
operator T*()
{
return data;
}
private:
T * data;
unsigned sz;
Array(const Array&);
Array& operator=(const Array&);
};
Array<int> x(MAX_BUFFER);
int i = 0;
for (i = 0; i < MAX_BUFFER; ++i)
{
x[i] = i + 1;
}
template<class T> class Array
{
public:
explicit Array(): data(0), sz(0) {}
explicit Array(unsigned size)
:sz(size), data(new T[size]) {}
~Array()
{
if (NULL != data)
{
delete[] data;
data = NULL;
}
}
template <typename index_t>
const T& operator[](index_t n) const
{
if (n >= sz || data == 0)
{
throw "Array subscript out of range";
}
return data[n];
}
template <typename index_t>
T& operator[](index_t n)
{
if (n >= sz || data == 0)
{
throw "Array subscript out of range";
}
return data[n];
}
operator const T*() const
{
return data;
}
operator T*()
{
return data;
}
private:
T * data;
unsigned sz;
Array(const Array&);
Array& operator=(const Array&);
};