// 构造函数
template
Array::Array(int size) {
this->size = size;
list = new T[size];
}
// 拷贝构造函数
template
Array::Array(const Array& a) {
size = a.size;
list = new T[size];
for (int i = 0; i < size; i++) {
list[i] = a.list[i];
}
}
// 析构函数
template
Array::~Array() {
delete[] list;
}
// 重载"[]"
template
T & Array::operator [](int i) {
return list[i];
}
// 重载"+"
template
Array& Array::operator+ (Array &rhs) {
Array* result = new Array(size + rhs.size);
for (int i = 0; i < size; i++) {
(*result)[i] = list[i];
}
for (int i = 0; i < rhs.size; i++) {
(*result)[size + i] = rhs.list[i];
}
return *result;
}
// 返回数组大小
template
int Array::getsize() {
return size;
}
// 重载"<<"
template
ostream& operator<<(ostream& os, Array& a) {
for (int i = 0; i < a.size; i++) {
os << a.list[i];
if (i != a.size - 1) {
os << ",";
}
}
return os;
}
class Array {
public:
Array(int size = 50);
Array(const Array& a);
~Array();
T & operator [](int i); // 重载"[]"
Array & operator+ (Array &rhs); // 重载 "+", 完成两个数组内容的拼接
int getsize(); // 返回数组大小
template
friend ostream& operator<<(ostream& os, Array& a);
private:
T* list;
int size;
};