问题 问答题

请编写类的成员函数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; } }本题主要考查考生对于运算符重载的掌握,重载下标运算是安全数组中非常重要的。注意下标操作符最终的目的是返回该下标对应的字符。

单项选择题 A1/A2型题
单项选择题