《转》return *this和 return this有什么区别?
别跟我说 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 = ; if(&a == a.get())
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
} return ;
}
结果为yes。
再看:
#include <iostream>
using namespace std; class A
{
public:
int x;
A get()
{
return *this; //返回当前对象的拷贝
}
}; int main()
{
A a;
a.x = ; 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 ;
}
结果为:
4
no //可见返回的是当前对象的副本
最后,如果返回类型是A&,那么return *this 返回的是当前对象本身(也就是其引用),而非副本。
转自:https://blog.csdn.net/stpeace/article/details/22220777
《转》return *this和 return this有什么区别?的更多相关文章
- js中的return,return true,return false小结
return 函数执行到这句时会终结,并返回调用函数,而且把表达式的值作为函数的结果返回 return false 可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转 ...
- javascript中的 return false和return true
关于javascript中的 return false和return true,return 是javascript里函数返回值的关键字,一个函数内处理的结果可以使用return 返回,这样在调用函数 ...
- javascript中的return、return true、return false、continue区别
1.语法为:return 表达式; 2.w3c中的解释: 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 也就是:当代码执行到return语句时,函数返回一个结果就结束运行了,ret ...
- javascript中return function与return function()的区别
参考https://stackoverflow.com/questions/7629891/functions-that-return-a-function-javascript 问题:唯一的区别是r ...
- onclick时间加return和不加return的区别
JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...
- Asp.Net MVC:return View()、return View("Login")、return Login()、return RedirectToAction("Login") 的区别
在做登录页面的时候发现的一些情况: ------------------------------------------------------------------------- public A ...
- 多个return和一个return
//一个returnnamespace CleanCSharp.Methods.Dirty { class MethodExitPoints { public string GenerateAgeAp ...
- return false 和 return true
常规用法 在普通函数中:return 语句终止函数的执行,并返回一个指定的值给函数调用者,一般会用一个变量接收这个返回值再进行其它处理.如果未指定返回值,则返回 undefined 其中,返回一个函数 ...
- Python的return self和return一个新的对象区别
目的:设计一个有理数相加.如3/5 + 7/15 = 80/75 return self 输入: class Rational0: def __init__(self, num, den=1): se ...
- JS return false 与 return true
在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页. Return False 就相当于终止符 ...
随机推荐
- Kafka技术内幕 读书笔记之(六) 存储层——服务端处理读写请求、分区与副本
如下图中分区到 日 志的虚线表示 : 业务逻辑层的一个分区对应物理存储层的一个日志 . 消息集到数据文件的虚线表示 : 客户端发送的消息集最终会写入日志分段对应的数据文件,存储到Kafka的消息代理节 ...
- Linux学习笔记:【004】Linux内核代码风格
Chinese translated version of Documentation/CodingStyle If you have any comment or update to the c ...
- Shell编程(二)Bash中调用Python
- vue实现简单的全选、反选、不选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- electron入门
Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环境中,并 ...
- 求f(n)=[n/1]+[n/2]+---+[n/n]的值 简单杂题
这种小题首先根据 n/1+n/2+n/3+--+n/n=nlogn+欧拉常数r 可以知道 1e12的范围也不会爆longlong,不需要写高精度(到现在都不会写) 再根据数据范围可知O(n)级别的暴力 ...
- Nginx正反向代理、负载均衡等功能实现配置
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 系统环境: VirtualBox Manager Centos6.4 nginx1.10.0 IP对应的机器名: IP ...
- tensorflow---alexnet training (tflearn)
# 输入数据 import input_data mnist = input_data.read_data_sets("/tmp/data/", one_hot=True) imp ...
- oracle 任务备份
@echo offset hour=%time:~,2%if "%time:~,1%"==" " set hour=0%time:~1,1%set temp=% ...
- Bootstrap响应式导航
<nav class="navbar navbar-default" role="navigation"> <div class=" ...