在C或C++的原生数组里,有一点不好的就是数组越界是察觉不到,代码也不会提醒,至于越界产生的bug什么时候引发系统问题,我们也无从知晓。在这里我们可以创建一个数组类,内部包含数组长度、数组越界访问时能主动发现。
数组类的创建我们还是按照顺序表的思路,创建一个Array类,实现基本的操作,再创建StaticArray与DynamicArray一个静态一个动态数组类,数组存储位置及大小,均在这两个子类完成,同时提供数组类对象间的赋值。
首先我们来看下父类Array,采用类模板方式,继承自MyObject类,并完成基本的数组操作
#ifndef __ARRAY_H__
#define __ARRAY_H__
#include "MyObject.h"
#include "MyException"
namespace MyLib
{
template <typename T>
class Array : public MyObject
{
protected:
T* m_array; //指针
public:
virtual bool set(int index, const T& e) //设置固定位置的值
{
bool ret = ( (0 <= index)&&(index <length()) );
if (ret)
{
m_array[index] = e;
}
else