603b.cpp

来自「C++实训教程」· C++ 代码 · 共 67 行

CPP
67
字号
/*
	603b.cpp
	a Array class,using operator[] overload
    demo a safe array !!自定义数组的安全性
    demo 设计上界和下界
*/
   
#include <iostream.h>
#include <stdlib.h>

class Array
{
	long * p;
    int size,down;
  public:
    Array(int n){	p = new long[n];  size = n;}
    Array(int dd,int uu)
    {
    	if (uu>dd)
    	{
    		size = uu - dd + 1;
    		down = dd;
    	}
    	else
    	{
    		size = 1;
    		down = dd;
    	}
   		p = new long[size];
   	} 
	 ~Array() {delete [] p;}
    long& operator [] (int i)
    {
    	if (i<down || i>(down+size-1) )
		{
			cerr<<"Array index is over bound!\n";
			exit(1); // #include <stdlib.h>
		}
      return p[i-down];
    }
};

main()
{
    const DOWN = -5,UP=5;
    int c=1;
    Array  a(DOWN,UP);
    int i;
    for (i = DOWN; i <=UP; i++)  a[i] = 10*i;
    for (i = DOWN; i <=UP; i++ , c++)
    {
       cout << "a[" << i << "]="	<< a[i] << "  ";
       if (!(c%5))  cout << endl;
    }
    cout << endl;
    a[UP+1] = 9999;
	 return 0;
}
/*
a[-5]=-50  a[-4]=-40  a[-3]=-30  a[-2]=-20  a[-1]=-10
a[0]=0  a[1]=10  a[2]=20  a[3]=30  a[4]=40
a[5]=50
Array index is over bound!


*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?