关于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 ...
随机推荐
- (54)Wangdao.com第七天_JavaScript 运算符
JavaScript 运算符,也叫操作符 对一个或者多个值进行运算,都是会返回结果的. 比如: typeof 返回一个值的类型,返回值类型是字符串. 隐式类型转换: 任意值 = 任意值 + &q ...
- mysql having和where的区别
having子句与where子句一样,都是用于条件判断的. 区别1 where是判断数据从磁盘读入内存的时候 having是判断分组统计之前的所有条件 区别原理 区别2 having子句中可以使用字段 ...
- JavaScript 中 replace方法 替换所有字符串
需要替换一个字符串中所有的某个字符串 java中使用replaceAll()方法就可以了.但是JavaScript中没有replaceAll方法 但是可以通过以下方法实现: /** * 空格替换为下划 ...
- 170217、nginx 安装时候报错:make: *** No rule to make target `build', needed by `default'. Stop.
出现此种情况,是linux系统没有安装先决条件 1.GCC——GNU编译器集合(GCC可以使用默认包管理器的仓库(repositories)来安装,包管理器的选择依赖于你使用的Linux发布版本,包管 ...
- 剑指offer——python【第23题】二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 首先要清楚,这道题不是让你去判断一个给定 ...
- JavaScript基础知识(Math的方法)
Math的方法 Math : 对象数据类型 : Math: {} 是window下的一个键值对: 属性名叫Math,属性值是一个对象 var obj = {a:1}; console.log(obj. ...
- 洛谷 P3379 【模板】最近公共祖先(LCA)
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...
- 使用Eureka作为springcloud的注册机
使用springcloud做项目的负载均衡,需要导的jar这里不再显示,具体配置如下: 作为被注册服务配置: 启动多台服务端就可以实现集群,相应的localhost需要转成真实的ip 当然一个项目还要 ...
- JS promise
1.Promise是什么? Promise是抽象异步处理对象以及对其进行各种操作的组件. 2.实例化 使用new来调用Promise的构造器来进行实例化 var promise = new Promi ...
- oracle 约束与索引
1.约束 1.not null(列表不为空) create table 表名(列名1 列表属性2 not null,列名1 列表属性2 not null); 2.unique(列表不能重复) crea ...