函数返回值为 const 指针、const 引用

函数返回值为 const 指针,可以使得外部在得到这个指针后,不能修改其指向的内容。返回值为 const 引用同理。

class CString
{
private:
	char* str;
public:
	const char* c_str() const;
};

const char* CString::c_str() const
{
	return str;
}

int main()
{
	CString s;
	const char* p = s.c_str();
}

下面的两条语句编译时都会报错。第一条语句出错是因为 "=" 左边是 char* 类型,右边是 const char* 类型,两边类型不匹配;第二条语句出错是因为 strcpy 函数的第一个形参是 char* 类型,而这里实参给出的是却是 const char* 类型,同样是类型不匹配。

char* p = s.c_str();
strcpy(s.c_str(), "Tiangong 1");

除非进行强制类型转换

char* tmp = (char*)s.c_str();
posted @ 2020-11-17 23:26  ltimaginea  阅读(256)  评论(0编辑  收藏  举报