#include <IOSTREAM>
using namespace std;
class chararray
{
private:
char *name;
int length;
public:
chararray(int len=0)
{
length=len;
name=new char[length];
}
char & operator[](int l)
{
static char ch=65;
if (length>l&&l>=0)
{
return name[l];
}
else
{
cout<<"\nthis number is out of range!";
return ++ch;
}
}
char f()
{
static char a=65;
return ++a;
}
};
void main()
{
chararray ca(9);
int i;
char *array="libinrong";
for (i=0;i<11;i++)
{
cout<<ca[i];
ca[i]=array[i];
}
for (i=0;i<11;i++)
{
cout<<ca[i];
}
cout<<endl;
cout<<ca.f();//为什么这三句会输出B,C,D
cout<<ca.f();
cout<<ca.f();
}
你说的我知道,但前面那个问题请解释
追答哦,那是因为
ca[9],ca[10]被赋以array[9]和array[10]的值了,而array[9]的值为0,array[10]的值不确定。
删除语句
ca[i]=array[i];
再看看运行结果就清楚了。