现在的位置: 首页 > 编程语言 > 正文

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

2018年11月09日 编程语言 ⁄ 共 546字 ⁄ 字号 评论关闭

编译正确代码:

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

抱歉!评论已关闭.