问题 问答题

请编写类的成员函数char & CharArray::operator[](int i),将下标运算符[]重载,如果i没有为负数或超界则返回该字符,否则输出“Index out of range.”并且返回0。要求使用if判断实现算法。输出结果如下:
Index out of range.
Index out Of range.
string
Index out of range.
Index out of range.
6
注意:部分源程序已存在文件test24_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数CharArray::operator[]的花括号中填写若干语句。
文件test24_2.cpp的内容如下:
#include<iostream.h>
class CharArray

public:
CharArray(int l)

Length=l;
Buff=new char[Length];

~CharArray ()

delete Buff;

int GetLength ()

return Length;

char & operator[] (int i);
private:
int Length;
char *Buff;
;
char & CharArray::operator [] (int i)


void main ()

int cnt;
CharArray string1(6);
char *string2="string";
for(cnt=0; cnt<8; cnt++)
string1[cnt] = string2[cnt];
cout<<"\n";
for(cnt=0; cnt<8; cnt++)
cout<<string1[cnt];
cout<<"\n";
cout<<string1.GetLength()<<endl;

答案

参考答案:
char & CharArray::operator [](int i)
{
static char ch=0;
if(i<Length && i>=0)
return Buff[i];
else
{
cout<<"\nIndex out Of range.";
return ch;
}
}

解析:本题主要考查考生对于运算符重载的掌握,重载下标运算是安全数组中非常重要的。注意下标操作符最终的目的是返回该下标对应的字符。

单项选择题
判断题