类设计--二维数组

重载运算符 [][]

在一维数组的基础上重新设计二维数组类

利用C++的template参数的嵌套性
Array< Array > a(3)
1.重新加入了个rsize,判断二维数组是否超。
#include 
using namespace std;
template 
class Array
{
private:
    T *arr;
    int arrsize;
public:
    Array(int asize=100):arrsize(asize){arr=new T[asize];}
    ~Array(){delete []arr;}
    T& operator[](int ind);
    operator T*() {return arr;}
	void resize(int rsize);
};
template 
T& Array::operator[](int ind)
{
    static T t;
    if (ind=0)
        return arr[ind];
    else
    {
        cout<<"下标出界:("<
void Array::resize(int rsize){
	if (rsize<0||rsize==arrsize)
		return ;
	T *newarr=new T[rsize];
	int n=(rsize > a(3);
    int i,j;
	a[0].resize(2);
	a[1].resize(2);
	a[2].resize(2);
    for(i=0;i<3;i++)
        for(j=0;j<2;j++)
            a[i][j] = 10*i+j;
	cout<
2.使用

a.at(1).at(3)

中.at()可以检查是否越界

vector > a(3);
需要加入这句话,可以检查二维a.at().at().
 
   
  
#include 
#include 
using namespace std;
template 
class Array
{
private:
    T *arr;
    int arrsize;
public:
    Array(int asize=100):arrsize(asize)
    {
        arr=new T[asize];
    }
    ~Array()
    {
        delete []arr;
    }
    T& operator[](int ind);
    operator T*()
    {
        return arr;
    }
    void resize(int rsize);
};
template 
T& Array::operator[](int ind)
{
    static T t;
    if (ind=0)
        return arr[ind];
    else
    {
        cout<<"下标出界:("<
void Array::resize(int rsize)
{
    if (rsize<0||rsize==arrsize)
        return ;
    T *newarr=new T[rsize];
    int n=(rsize > a(3);
    vector > a(3);
    int i,j;
    a[0].resize(2);
    a[1].resize(2);
    a[2].resize(2);
    for(i=0; i<3; i++)
        for(j=0; j<2; j++)
            a[i][j] = 10*i+j;
    cout<

3.重新设计二维数组。

#include 
using namespace std;
template 
class Array
{
private:
    T *arr;
    int arrsize;
public:
    Array(int asize=100):arrsize(asize){arr=new T[asize];}
    ~Array(){delete []arr;}
    T& operator[](int ind);
    operator T*() {return arr;}
	void resize(int rsize);
};
template 
T& Array::operator[](int ind)
{
    static T t;
    if (ind=0)
        return arr[ind];
    else
    {
        cout<<"下标出界:("<
void Array::resize(int rsize){
	if (rsize<0||rsize==arrsize)
		return ;
	T *newarr=new T[rsize];
	int n=(rsize
class Array2
{
private:
    Array *arr;
    int arrrow,arrcol;
public:
    Array2(int =100,int =100);
    ~Array2(){delete []arr;	};
    Array& operator[](int ind);
    operator Array*() {return arr;}
};
template 
Array2::Array2(int row,int col):arrrow(row),arrcol(col)
{
	arr=new Array[row];
	for(int i = 0; i < row; i++)
		arr[i].resize(col);
};
template 
Array& Array2::operator[](int ind){
    static Array t;
    if (ind=0)
        return arr[ind];
    else
    {
        cout<<"下标2出界:("< a(3,2);
    int i,j;
    for(i=0;i<3;i++)
        for(j=0;j<2;j++)
            a[i][j] = 10*i+j;
//	cout<<(*(a+1))[1]<
不能重载【】【】。

你可能感兴趣的:(类,设计,c++)