#include <iostream>

using namespace std;

const int DefaultSize = 10;

class Array
{
public:
  Array(int itsSize=DefaultSize);
  ~Array()
  {
    delete[] pType;
  }

  //运算符重载
  int& operator[](int offset);
  const int& operator[](int offset) const;
  
  int GetItsSize() const
  {
    return itsSize;
  }

  class ArrayIndexOutOfBoundsException {};
  class ElementZero{};

private:
  int *pType;
  int itsSize;
};

Array::Array(int size) :itsSize(size)
{
  if (size==0)
  {
    throw ElementZero();
  }
  
  pType = new int[size];
  for (int i=0;i<size;i++)
  {
    pType[i] = 0;
  }
}

int& Array::operator[](int offset)
{
  int vcsize =GetItsSize();
  if (offset>=0 && offset<vcsize)
  {
    return pType[offset];
  }else{
    throw ArrayIndexOutOfBoundsException();
  }

}

const int& Array::operator[](int offset) const
{
  int vcsize = this->GetItsSize();
  if (offset >= 0 && offset<vcsize)
  {
    return pType[offset];
  }
  else {
    throw ArrayIndexOutOfBoundsException();
  }
}

int main()
{
  Array a;
  Array b(12);
  b[2] = 10;

  cout << b[2]<< endl;

  Array arr1(20);
  try
  {
    for (int k=0;k<100;k++)
    {
      arr1[k] = k;
    }
  }
  catch (Array::ArrayIndexOutOfBoundsException)
  {
    cout<<"Array Index Out Of Bounds Exception..."<<endl;
  }

  system("pause");
  return 0;
}

-------------------------------------------------------------------------------------

10
Array Index Out Of Bounds Exception...
请按任意键继续. . .

c++自定义数组越异常 ArrayIndexOutOfBoundsException (学习)的更多相关文章

  1. C#学习之自定义数组及其排序

    在C#中对数组的定义比较灵活.这里着重说一下自定义数组和Array类的排序. 在Array类中通过属性Length就可以获取整个数组中数据的数量,可以通过foreach迭代数组. 使用Rank属性可以 ...

  2. Java中的自定义数组队列

    在Java中,作为所有数据结构中存储和获取速度最快的一种,数组凭借其这种简单易用的优势在各个方面都能大显神威.但是数组也有自身的局限性.数组的长度必须是固定的一旦定义之后就无法动态的更改,这就会造成这 ...

  3. 墨菲定律与 IndexOutOfBoundsException(数组越界异常)

    今天维护又反馈了一问题过来,查询试卷时报数组越界异常: 2017-02-28 10:45:24,827[ERROR] HttpException[10.32.111.7:60446:2D07867BE ...

  4. Java实现自定义数组及其方法

    自定义数组 主要功能有增.删(根据索引,根据值).改.查扩容等功能 package array; public class CustomArray { private int[] array = nu ...

  5. C++ 数组的地址问题学习随笔

    二维数组额地址问题学习,本文学习内容参考:http://blog.csdn.net/wwdlk/article/details/6322439 #include<iostream> usi ...

  6. yii CListView中使用CArrayDataProvider自定义数组作为数据

    CArrayDataProvider类手册: http://www.yiichina.com/api/CArrayDataProvider 在yii中无论是CListView还是CGridView,对 ...

  7. 5.java.lang.IndexOutOfBoundsException(数组下标越界异常)

    数组下标越界异常 查看调用的数组或者字符串的下标值是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中 ...

  8. python3.4中自定义数组类(即重写数组类)

    '''自定义数组类,实现数组中数字之间的四则运算,内积运算,大小比较,数组元素访问修改及成员测试等功能''' class MyArray: '''保证输入值为数字元素(整型,浮点型,复数)''' de ...

  9. 学JAVA二十一天,自定义数组

    今天就说一下自定义数组,至于要怎么用,我也不知道,反正逼格挺高的. 闲话不多说,开始: 首先,自定义数组首先要创建一个类,用来做自定义数组的类型. public class User{ private ...

随机推荐

  1. 网络分类及OSI七层模型

    一.网络分类: 局域网(LAN)是指在某一区域内由多台计算机互联成的计算机组.一般是方圆几千米以内.局域网可以实现文件管理.应用软件共享.打印机共享.工作组内的日程安排.电子邮件和传真通信服务等功能. ...

  2. cannot find -llapack + -lblas

    问题: cannot find -llapack + -lblas 解决: sudo apt-get install libblas-dev liblapack-dev 转:https://suppo ...

  3. 访问mapper方法提示invalid bound statement (not found)原因总结

    1.访问所有的mapper都报此错误,检查 mapper.xml 中的 namespace 2.访问mapper中的部分方法时报此错误,检查xml文件中的id是否和接口中的方法名一致 3.mapper ...

  4. Window脚本学习笔记之BAT简介

    本篇文章不是直接讲技术,而是对我自己学习这些年来的一番感触和简单的介绍,其间也穿插着一些基本的知识,若是学习技术者可跳过,亦不妨碍学习其他. BAT简介 BAT是Windows的批处理脚本,即以后缀“ ...

  5. FireFox版本大于36.0,Yslow不能正常使用解决方案

    Yslow暂时不支持firefox 36.0及以上版本你可以使用它的书签版本.访问这里 http://yslow.org/mobile/把页面最后的那个 Desktop Bookmarklet Ins ...

  6. BZOJ 2127 / Luogu P1646 [国家集训队]happiness (最小割)

    题面 BZOJ传送门 Luogu传送门 分析 这道题又出现了二元关系,于是我们只需要解方程确定怎么连边就行了 假设跟SSS分在一块是选文科,跟TTT分在一块是选理科,先加上所有的收益,再来考虑如何让需 ...

  7. mapbox展示动态图标

    mapbox-gl通过为marker设置css动画,实现动态闪烁效果,先放个效果图 . 1.主要就是为元素设置一个动画, myfirst动画让元素随时间放大 .marker { /* backgrou ...

  8. 12、Spring Boot 2.x 集成 MongoDB

    1.12 Spring Boot 2.x 集成 MongoDB 完整源码: Spring-Boot-Demos

  9. HTTP权威指南与图解HTTP读书笔记

    目录 第1章 HTTP概述 1.1 Web客户端和服务器 1.2 资源 1.2.1 URI 1.2.2 URL 1.2.3 URN 1.3 事务 1.3.1 方法 1.3.2 状态码 1.3.3 We ...

  10. poi操作excel之: 将NUMERIC转换成TEXT

    一.NUMERIC TO TEXT(生成excel)代码生成一个excel文件: public static void generateExcel() throws Exception { XSSFW ...