Array.h
复习:
- 拷贝构造函数
- 使用new在堆区开辟数据,delete销毁数据
- 运算符重载[ ] 、> 、 =;
- 直接使用assert(n >= 0 && n < size); //检查下标是否越界
#pragma once
//Array.h
#include <iostream>
using namespace std;
#include <cassert>
//数组类模板定义
template <class T>
class Array {
public:
Array(int sz = 50); //构造函数
Array(const Array<T> &a); //拷⻉构造函数
~Array(); //析构函数
Array<T> operator = (const Array<T> &rhs); //重载"="使数组对象可以整体赋值
T & operator [] (int i); //重载"[]",使Array对象可以起到C++普通数组的作⽤
const T & operator [] (int i) const; //"[]"运算符的const版本
operator T * (); //重载到T*类型的转换,使Array对象可以起到C++普通数组的作⽤
operator const T * () const; //到T*类型转换操作符的const版本
int getSize() const; //取数组的⼤⼩
void resize(int sz); //修改数组的⼤⼩
private:
T *list; //T类型指针,⽤于存放动态分配的数组内存⾸地址
int size; //数组⼤⼩(元素个数)
};
//构造函数
template <class T>
Array<T>::Array(int sz) {
assert(sz >= 0); //sz为数组⼤⼩(元素个数),应当⾮负
size