c++ 中this 和 *this区别
别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。
正确答案为:return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:
[cpp] view plain copy
- #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
再看:
[cpp] view plain copy
- #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
最后, 如果返回类型是A&, 那么return *this返回的是当前对象本身(也就是其引用), 而非副本。
c++ 中this 和 *this区别相关推荐
- mybatis与php,浅谈mybatis中的#和$的区别
浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...
- 关于EF中ApplyCurrentValues和ApplyOriginalValues区别
关于EF中ApplyCurrentValues和ApplyOriginalValues区别:两者都是编辑数据时使用. // // 摘要: // 将 System ...
- java mod %区别_Java中 % 与Math.floorMod() 区别详解
%为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...
- JAVA 中equals()与==的区别
原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...
- python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...
1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...
- java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array
java中Array和ArrayList区别 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array https://blog.csdn.net/ywjy10280 ...
- SQL点滴31—SQL语句中@@IDENTITY和@@ROWCOUNT区别
原文:SQL点滴31-SQL语句中@@IDENTITY和@@ROWCOUNT区别 SQL语句中@@IDENTITY和@@ROWCOUNT区别 在一条 INSERT.SELECT INTO 或大容量复制 ...
- android r类 作用,Android 主项目和 Module 中 R 类的区别
Android 主项目和 Module 中 R 类的区别 我们知道 Android 项目中会通过自动生成一个 R.java 类的方式来保存项目中所有资源文件的标识在主项目中生成的 R.java 中的资 ...
- 【mybatis】mybatis中 的# 和 $的区别
mybatis中 的# 和 $的区别 参考地址:https://www.cnblogs.com/sxdcgaq8080/p/10869144.html 转载于:https://www.cnblogs. ...
- 面试必问一:Java 中 == 和 equals 的区别你知道吗
面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...
最新文章
- php 求数组组合数,php实现求数组全排列,元素所有组合的方法
- filco蓝牙不好用_2020双十二机械键盘选购 牌子推荐 附雷柏/ikbc/akko/杜伽/FILCO热销机械键盘品牌...
- python装饰器原理-Python 装饰器工作原理解析
- Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面
- SFB 项目经验-02-共存迁移-Lync 2013-TO-SFB 2015-规划02
- java面试题之hashCode与equals()方法
- Adobe发布基于HTML5技术的网络开发工具以解决跨平台问题
- (1)什么是socket(套接字)
- 显示滚动条后,table 表头与内容不对齐,JS脚本控制
- .Net MVC新建视图时出现“AutoMapper已拥有为System.ValueTuple定义的依赖项”的错误提示
- linux查找文件并显示修改时间,linux下find命令和文件的三种时间
- 3D屏保:魔方2.0版本
- linux正则表达式大全,正则表达式,正则表达式语法大全
- mariadb安装几个问题
- android 5.1 改mac地址,mac地址可以随便改吗
- 构造不可测集-Vitalie Set
- 魔术师usm安装服务器系统,魔术师u盘一键装系统
- java奈奈老师2_【图片】奥尔三X作【新任女教师奈奈、同居俏佳人、同居俏女仆】攻略&结局【javagame吧】_百度贴吧...
- linux ll命令是什么
- 时间格式Python
热门文章
- 修改 wordpress 后台管理员登录地址
- 基于C#在WinCE6.0系统SQLCE3.5的安装开发使用
- 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - C. 数列求值
- 采用8种相位,每种相位各有两种幅度的QAM调制方法,在1200Baud的信号传输速率下能达到的网数据传输速率为( )
- 2013\Province_C_C++_A\4.颠倒的价牌
- 《数据库原理与应用》(第三版)第15章 备份和恢复数据库 基础 习题参考答案
- DSP 的双缓冲串口程序设计
- 【Qt5.8】Qt5.8中串口信息类QSerialPortInfo
- 【Linux系统编程】Linux 可执行文件结构与进程结构
- 苹果开发者_苹果,你的开发者文档写得烂透了