这段程序的矛盾如何解释

onlyflyer1 2003-04-07 08:44:29
其实是个菜鸟问题:(代码如下)
string& string::operator=(const char* str){
if (!str) //if str is a null pointer
{
_size=0;
delete[] _string;
_string=0;
}
else
{
_size=strlen(str)
delete[] _string;
_string=new _string[_size+1];
strcpy(_string,str);
}
return *this;
}

这是一个关于运算符重载的程序,程序主题没什么,关键在于开头和结尾部分让我困惑,重载的操作符的返回类型定为string&,但为什么最后返回的是一个this指针?虽然我知道其实引用也是一个特殊的指针,但是这个this指针指的是什么呢?难道是新开辟的内存空间的首地址吗?
...全文
33 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
whhif 2003-04-07
  • 打赏
  • 举报
回复
它返回的不是THIS而是*THIS,这是代表返回STRING一个对象.而且是对象的引用.
因此它就可以这样用:
string a="hello";
string b,c;
c=b=a;//这样连起来一起用了.

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧