如何重载数组下标运算符

为防止在对数组动态赋值时发生数组越界,C++提供了一种能够解决此问题的方法——重载运算符[]。示例程序:
#include < iostream >
class  CArray
{
   
public :
   CArray(
int  l)
   {
       length
= l;
       Buff
= new   char [length];
   }
   
~ CArray(){delete Buff;}
   
int  GetLength(){ return  length;}
   
char &   operator  []( int  i);
   
private :
   
int  length;
   
char   * Buff;
};

char   &  CArray:: operator []( int  i)
{
    
static   char  ch = 0 ;
    
if (i < length  &&  i >= 0 )
        
return  Buff[i];
    
else
    {
        cout
<< " \nIndex out of range. " ;
        
return  ch;
    }
}

void  main()
{
    
int  cnt;
    CArray string1(
6 );
    
char   * string2 = " string " ;
    
for (cnt = 0 ;cnt < string1.GetLength();cnt ++ )
        string1[cnt]
= string2[cnt];
        cout
<< " \n " ;
        
for (cnt = 0 ;cnt < string1.GetLength();cnt ++ )
           cout
<< string1[cnt];
        cout
<< " \n " ;
    cout
<< string1.GetLength() << endl;
}
在重载下标运算符函数时注意:
1)该函数只带一个参数,不可带多个参数。
2)得重载为友元函数,必须是非static类的成员函数。

你可能感兴趣的:(如何重载数组下标运算符)