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

时间:2023-03-10 00:16:52
函数返回值为 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();