編譯正確代碼:
#include<stdio.h>
#include <string.h>
#include<iostream>
using namespace std;
class T{
public:
T(string p)
{
ptext = p;
}
const char & operator [](int pos) const
{
return ptext[pos];
}
string ptext;
};
int main()
{
string s = "abcd";
T t(s);
//t[0] = 't';//因為為const返回類型,所以不能賦值
printf("%s\n", s.c_str());
}
編譯錯誤代碼:
#include<stdio.h>
#include <string.h>
#include<iostream>
using namespace std;
class T{
public:
T(string p)
{
ptext = p;
}
char & operator [](int pos) const//返回類型不為const編譯錯誤
{
return ptext[pos];
}
string ptext;
};
int main()
{
string s = "abcd";
T t(s);
//t[0] = 't';//因為為const返回類型,所以不能賦值
printf("%s\n", s.c_str());
}