// 构造函数 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) { if (i < 0 || i >= size) { cout << "数组下标越界!" << endl; exit(1); } return list[i]; }

// 重载"+"运算符 template Array & Array::operator+ (Array &rhs) { Array *temp = new Array(size + rhs.size); for (int i = 0; i < size; i++) { (*temp)[i] = list[i]; } for (int i = 0; i < rhs.size; i++) { (*temp)[i + size] = rhs.list[i]; } return *temp; }

// 返回数组大小 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; };


原文地址: https://www.cveoy.top/t/topic/oBgz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录