天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

如何重载数组下标运算符

Posted on 2012-02-24 00:08 hoshelly 阅读(1653) 评论(0)  编辑 收藏 引用 所属分类: C++
为防止在对数组动态赋值时发生数组越界,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类的成员函数。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理