C++ const函数返回值必须为const引用

2014-11-24 07:20:52 · 作者: · 浏览: 2

编译正确代码:


#include
#include
#include
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
#include
#include
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());
}