别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。

正确答案为:return *this返回的是当前对象的克隆(当然, 这里仅考虑返回类型为A, 没有考虑返回类型为A& )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:

#include <iostream>
using namespace std;   class A
{
public:   int x;   A* get()   {   return this;   }
};   int main()
{   A a;   a.x = 4;   if(&a == a.get())   {   cout << "yes" << endl;   }   else   {   cout << "no" << endl;   }   return 0;
}

结果为:yes

再看:

#include <iostream>
using namespace std;   class A
{
public:   int x;   A get()   {   return *this; //返回当前对象的拷贝   }
};   int main()
{   A a;   a.x = 4;   if(a.x == a.get().x)   {   cout << a.x << endl;   }   else   {   cout << "no" << endl;   }   if(&a == &a.get())   {   cout << "yes" << endl;   }   else   {   cout << "no" << endl;   }   return 0;
}

结果为:

4

no

return *this和return this的区别相关推荐

  1. 多线程编程:return、pthread_exit()、exit()函数区别

    多线程编程:return.pthread_exit().exit()函数区别: return:                 返回到调用者那里去 pthread_exit():    将调用该函数的 ...

  2. return 、break 和 continue的区别

    return .break和continue的区别和作用 return关键字并不是专门用于跳出循环的,return的功能是结束一个方法. 一旦在循环体内执行到一个return语句,return语句将会 ...

  3. 中断语句break、continue、return、exit和goto的区别

    1.continue语句 continue语句是这5种结束循环的方式中最特殊的,因为它并没有真的退出循环,而是只结束本次循环体的执行,所以在使用continue的时候要注意这一点. 下图为各种循环结构 ...

  4. C语言:return 0 , return 1 和 return -1 以及 return ,break 的区别

    1. return 没有返回值 和  break的区别: return 多用于void 类型的函数. 例如: void aa(){while(1){for(){return;//break;}if() ...

  5. python中return0与return1_关于C++中的return 0和return 1的区别

    展开全部 return 0和return 1的区别主要体现在不同退出状态等方面,详细解释如下: 1.两e69da5e887aa62616964757a686964616f31333366306531者 ...

  6. return false;和e.preventDefault;的区别

    因为有父, 子节点同在, 因为有监听事件和浏览器默认动作之分. 使用 JavaScript 时为了达到预期效果经常需要阻止事件和动作执行. 一般我们会用到三种方法, 分别是 stopPropagati ...

  7. return,break,continue三者区别

    break用于完全结束一个循环,跳出循环体.不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码. break不仅可以结束其所在的循环,还可结束其外层循环.此时需要 ...

  8. C++中return 0;与return;的区别

    return语句有两种形式: 1.return;//不带返回值的return语句 2.return 0;//带返回值的return语句,或者返回一个变量或一个函数. 不带返回值的return语句用于, ...

  9. return 0和return的区别

    return语句有以下形式: return;//不带返回值的return语句 return 0;//带返回值的return语句,或者返回一个变量或一个函数. return 1//表示函数异常结束 不带 ...

  10. JavaScript 中的return true 和return false

    2019独角兽企业重金招聘Python工程师标准>>> 1.对于return true 和 return false: return false表示返回一个false值,也就是说提交 ...

最新文章

  1. 64位windows驱动使用asm
  2. ue4 截图_UE4中创建赛博朋克中国城市
  3. LSTM简介以及数学推导(FULL BPTT)
  4. C指针原理(44)-汇编基础
  5. 介绍神经网络_神经网络介绍
  6. 给Android程序员的一些面试建议,帮你突破瓶颈
  7. 5.6亿人没有存款、人均负债13万,大数据揭示负债累累的年轻人
  8. 昨晚停网后,我写了一段Python代码破解了隔壁小姐姐的wifi密码,结果亮了!
  9. 重磅!深度学习的顶级会议ICLR 2020 数据图文详解
  10. mysql配置命令_MySQL基本配置命令总结
  11. 2014年0417的工作计划
  12. 455 periodic strings
  13. 游戏筑基开发之C语言打印(printf)中文时出现乱码的解决方案
  14. H264 STAP-A解包代码(测试通过)
  15. Android:根据阳历日期获取农历日期
  16. 信息学奥赛一本通:题解目录 (〃‘▽‘〃)点个赞吧
  17. android多个悬浮窗口的实现,android实现桌面移动悬浮窗口
  18. 孩子立刻就不玩游戏了,因为他找到更好玩的东西!
  19. nodejs遍历一个目录下所有的文件
  20. Neo4j Desktop版本的安装学习

热门文章

  1. City of Angels
  2. leetcode 24: 两两交换链表中的节点
  3. 同步锁Lock的使用
  4. 接口与object的关系
  5. 制作CentOS fence-agents 镜像
  6. 基于redis的cas集群配置(转)
  7. 性能优化指南:性能优化的一般性原则与方法
  8. 重定向、别名、绝对路径、相对路径 详解
  9. 关键基础设施是否会成为DDoS攻击的新目标?答案是不大会
  10. 数据库中间件MyCat学习总结(1)——MyCat入门简介