问关于重载运算符[]的问题~~
请教一下这两个重载函数到底返回的是什么引用啊?在主函数里是怎么用的?
char& operator[](int n)
{
return *(sptr+n);
}
const char operator[](int n) const
{
return *(sptr+n);
}
谢谢了~~~
代码如下~~:
#include <iostream.h>
#include <string.h>
class String
{
char* sptr;
public:
String(char* s=0);
~String(){delete sptr;}
void display()
{
cout<<sptr<<endl;
}
char& operator[](int n)
{
return *(sptr+n);
}
const char operator[](int n) const
{
return *(sptr+n);
}
};
String::String(char* s)
{
if(s)
{
sptr=new char[strlen(s)+1];
strcpy(sptr,s);
}
else
sptr=0;
}
int main()
{
String string1("The ldes of March");
string1.display();
string1[4]='1';
string1[5]='5';
string1[6]='t';
string1[7]='h';
string1.display();
strncpy(&string1[4],"21st",4);
string1.display();
const String string2("Et tu,Brute?");
for(int i=0;i<13;i++)
cout<<string2[i];
getchar();
return 0;
}