关于C++ return * this
转自 :https://blog.csdn.net/u011846436/article/details/45222905
不废话,直接上例子,使用赋值构造函数解释为什么需要 return *this
#include<iostream>
using namespace std; class Test{ public:
//构造函数
Test(int i=, double j=0.0) : m_i(i), m_j(j){ } //赋值构造函数
Test& operator=(Test &rhs){
this->m_i = rhs.m_i;
this->m_j = rhs.m_j;
return * this;
} int m_i;
double m_j; }; int main(){ //1、赋初值,输出 1 2.3
Test obj1(,2.3);
cout<< obj1.m_i << endl << obj1.m_j <<endl;
cout << endl << "-------------------" << endl; //2、未赋初值,输出0 0
Test obj2;
cout<< obj2.m_i << endl << obj2.m_j <<endl;
cout << endl << "-------------------" << endl; //3、未赋初值,但是通过赋值构造函数进行了赋初值,但是注意是重复调用赋值构造函数赋初值。
Test obj3;
obj3 = obj2 = obj1;//这里,先进性obj2 = obj1 的操作, (赋值成功后通过return *this,返回obj2对象), 然后进行 obj3 = obj2 的操作。
cout<< obj2.m_i << endl << obj2.m_j <<endl;
cout << endl << "-------------------" << endl; /****
通过示例3,你会发现,如果没有return * this,你不能够返回obj2对象,
那么在进行 obj3=obj2 操作的时候,赋值构造函数就不能用了。
C++ 为了方便我们使用类似于 int i=j=k=5这种赋值方式,
就必须在从右向左赋值过程中,每次执行完一个赋值操作,返回该对象,然后继续向左执行。
*****/ return ;
}
另外还有一个很不错的解释 : https://blog.csdn.net/stpeace/article/details/22220777
关于C++ return * this的更多相关文章
- jsp中出现onclick函数提示Cannot return from outside a function or method
在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...
- JavaScript中fn()和return fn()
看博客时,注意到return的重要性 参考:http://www.cnblogs.com/raoyunxiao/p/5644032.html 看似反常的例子: var i = 0; function ...
- 【知识积累】try-catch-finally+return总结
一.前言 对于找Java相关工作的读者而言,在笔试中肯定免不了遇到try-catch-finally + return的题型,需要面试这清楚返回值,这也是这篇博文产生的由来.本文将从字节码层面来解释为 ...
- Ajax接收不到PHP return后的结果的原因
PHP在处理ajax返回值的时候,如果使用return如 return $result会失败,echo $result却没问题. 解释原因如下: 1.ajax请求从服务器端读取返回值,而且这些返回值必 ...
- oncopy="document.selection.empty()"跟oncopy="return false"什么区别?
实现效果一样,禁止复制. 区别: oncopy="document.selection.empty()" 没禁止,只是把它复制的内容,变成空了: oncopy="ret ...
- 自动判断应该Ajax还是return
起因 最近回顾以前的代码,发现一个偶尔会见到的现象.一个类里面的方法可能需要Ajax返回,也有可能需要函数return.这个现象发生在网站MVC中的 逻辑层(或模型层),示例如下.IndexCtrl是 ...
- jquery中ajax用return来返回值无效
jquery中,ajax返回值,有三种写法,只有其中一种是成功的 /** * async:false,同步调用 * 返回1:2 * 失败 * 分析:ajax内部是一个或多个定义的函数,ajax中ret ...
- 高程(3):操作符、for、for...in循环、break/continue/return语句、函数等
1.关系操作符 注意点:1)比较操作数是两个字符串,是比较字符串的字符编码值. 如:"a" > "b" 返回 false:"a" & ...
- [转载]js中return的用法
一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return; 在大多数情况下,为事件处理函 ...
- 解决springmvc报No converter found for return value of type: class java.util.ArrayList问题
一.背景 最近闲来无事,想自己搭建一套Spring+SpringMVC+Mybatis+Mysql的环境(搭建步骤会在以后博客中给出),结果运行程序时,适用@ResponseBody注解进行返回Lis ...
随机推荐
- 2019-2-14SQLserver中拼音查询数据
SQLserver中获取文字的全拼音: CREATE function [dbo].[f_GetPinyin](@words nvarchar()) returns varchar() as begi ...
- 最近公共祖先问题(LCA)的几种实现方式
LCA也是很经典的内容了,我这个蒟蒻居然今天才开始弄QAQ 我太弱啦! 照例先上定义——————转自维基百科 在图论和计算机科学中,最近公共祖先是指在一个树或者有向无环图中同时拥有v和w作为后代的最深 ...
- selenium3 TestNG 介绍与配置
一.TestNG介绍 我之前有学习过Junit,Nunit 这些工具,现在想看看TestNG,那么TestNG是什么呢?他们之间有什么区别呢? TestNG(Next Generation)是一个测试 ...
- react_app 项目开发
react_app 项目开发 npm install -g create-react-app npm root -g // 查看安装包位置 创建项目 create-react-app m ...
- Prometheus 和 Grafana 安装部署
Prometheus 是一套开源的系统监控报警框架.Prometheus 作为生态圈 Cloud Native Computing Foundation(简称:CNCF)中的重要一员,其活跃度仅次于 ...
- Spring Cloud 学习记录
Spring Cloud中文网 拜托!面试不要再问我Spring Cloud底层原理 SpringCloud简介与5大常用组件 Spring Cloud在国内中小型公司能用起来吗?
- Python 模块定义、导入、优化详解
一.定义 模块:用来从逻辑上组织 python 代码(变量,函数,类, 逻辑:实现一个功能),本质就是 .py 结尾的 python文件(例如:test.py文件,对应的模块名:test) 包:用来从 ...
- 为Vue.js添加友好日志
const isDebugEnabled = process.env.NODE_ENV !== "production"; const isInfoEnabled = true; ...
- ASO关键词优化技巧:如何充分利用热搜榜与相关热点?
ASO关键词优化对提高市场曝光率.增加APP下载量有着至关重要的作用.那如何充分利用热搜榜与相关热点来进行ASO优化呢? 一.产品定位 因为此文主要是讲优化APP关键词的,所以产品定位这一块就 ...
- [dev] 刷HHKP的一般流程及常见错误(多图慎点)
( 为什么打了个dev的tag?development不用键盘,难道用鼠标??) 嗯呐,我有个HHKP,你看: 好不好看? 脏不脏? 接下来讲一下,我是怎么刷它,要看完哝,不然拆坏了不要怪我. 本来我 ...