C/C++ return *this和return this的区别
时间:2019-10-21
本文章向大家介绍C/C++ return *this和return this的区别,主要包括C/C++ return *this和return this的区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先我们知道~
1 class Test 2 { 3 public: 4 Test() 5 { 6 return this; //返回的当前对象的地址 7 } 8 Test&() 9 { 10 return *this; //返回的是当前对象本身 11 } 12 Test() 13 { 14 return *this; //返回的当前对象的克隆 15 } 16 private: //... 17 };
return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是拷贝, 若返回类型为A&, 则是本身 )。
return this返回当前对象的地址(指向当前对象的指针)
我们再来看看返回拷贝那个的地址~
1 #include <iostream> 2 using namespace std; 3 class Test 4 { 5 public: 6 int x; 7 Test get() 8 { 9 return *this; //返回当前对象的拷贝 10 } 11 }; 12 int main() 13 { 14 Test a; 15 a.x = 4; 16 if(a.x == a.get().x) 17 { 18 cout << a.x << endl; 19 cout << &a << endl; 20 cout << &a.get() <<endl; 21 } 22 else 23 { 24 cout << "no" << endl; 25 cout << &a << endl; 26 cout << &a.get() <<endl; 27 } 28 29 return 0; 30 }
由运行结果得知会报下列错误!!!
cpp [Error] taking address of temporary [-fpermissive]
这是因为引用了临时对象的地址而引发的警报 临时对象不可靠……
所有要注意!
原文地址:https://www.cnblogs.com/ZhuJD/p/11713937.html
- Quartz框架应用(1)
- 6个编写优质干净代码的技巧
- 【Jfinal源码】第一章 com.jfinal.core.JFinalFilter(1)
- 【ehcache】 timeToLiveSeconds 和 timeToLiveSeconds 的区别
- 升级 CentOS7 、Redis 3.2.x 的问题
- AngularJS 中使用Swiper制作滚动图不能滑动
- JAVA服务端配置允许跨域请求
- CentOS mysql配置主从复制
- Quartz依赖数据库表
- Spring Security Oauth2.0 实现短信验证码登录
- 【Spring Cloud】Redis缓存接入监控、运维平台CacheCloud
- 基于Redis实现分布式应用限流
- Jasypt : 整合spring boot加密应用配置文件敏感信息
- Eureka:扩展ClientFilter实现服务注册自定义过滤
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法