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类的成员函数。