数组下标重载出错,求解!
数组长度检测出现了问题。看图。要怎么修改?
字符串的前一个字符不是'\0'吗?怎么会出这样的错误?求解!
#include <iostream>using namespace std;class A{public: A(int i){length=i;size=new char[length];} ~A(){delete []size;} int getlength(){return length;} char&operator[](int i)//因为重载的是下标,所以后面加上[],因为是数组,不能按值传递,所以按别名返回 { if (i>=0 && i<length)//前面可以等于0 { return size[i];//返回的是那个数组元素的值 } else { cout<<endl<<"out of range!!!"<<endl; return size[length-1];//返回最后一个字符,也就是结束符 \0 } }private: int length; char *size;};int main(){ A arry(6); char *ch="hello1234"; for (int i=0;i<8;i++){arry[i]=ch[i];} for (int i=0;i<8;i++){cout<<arry[i];}//执行这句的时候,显示跟预期的有差别 return 0;}