关于赋值构造函数语法的困惑?this == &src

bandaoyu 2018-11-07 08:07:31
下面是类string的赋值构造函数:
String& operator=(const String& src) //赋值构造函数
{
if(this == &src)
return *this;
delete [] data;
data = new char[src.length+1];
strcpy(data,src.data);
return *this;
}

困惑:

1、this 是一个指针,&src表示什么? 不是表示src本身吗?src本身是地址?


2、*this 是类本身,return类本身,用&class 来接?

困惑,大家帮帮忙,如何理解

...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
英雄@末路 2018-11-08
  • 打赏
  • 举报
回复
在del前不是判断了是不是自己了么?怎么可能会自宫呢?
bandaoyu 2018-11-08
  • 打赏
  • 举报
回复
引用 2 楼 ahui5252 的回复:
&src获取src的地址.this由编译器传进来,是本体的地址.this==&src就是比较两个地址是否相同来判断是不是就是自己
谢谢,这样一说就清晰多了
bandaoyu 2018-11-08
  • 打赏
  • 举报
回复
引用 1 楼 zjq9931 的回复:
1.……,所以乐子大了。。
2.this是自己的指针,*this就表示自己啊。返回自己,不是类自己,而是类当前实例化的自己。
哈哈哈,乐子大了,没毛病!谢谢你的回复
ahui5252 2018-11-07
  • 打赏
  • 举报
回复
&src获取src的地址.this由编译器传进来,是本体的地址.this==&src就是比较两个地址是否相同来判断是不是就是自己
  • 打赏
  • 举报
回复
1.检测是否是自己给自己赋值; 如果是自己给自己赋值,那么下面的delete [] data的时候乐子就大了。 先删除了,然后再new,new多大呢?根据src的大小,但是src就是自己啊,但自己的数据已经删除了,怎么知道大小呢? 然后拷贝数据也是,自己往自己里面拷贝,但是自己的数据已经删除了,所以乐子大了。。 2.this是自己的指针,*this就表示自己啊。返回自己,不是类自己,而是类当前实例化的自己。

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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