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

编译正确代码:

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


原文地址:https://www.cnblogs.com/javawebsoa/p/3052278.html