编译正确代码:
- #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());
- }