C++类的返回值是*this的成员函数问题
作者:棉猴 发布时间:2023-02-01 19:52:50
标签:C++类,返回值,this,成员函数
C++类返回值是*this成员函数
当C++类的成员函数其返回值是*this时,表示返回值是调用该成员函数的变量的引用。
例如:
class A
{
public:
A& func1() {
return *this;
}
int i{0};
}
此时,类A的成员函数func1的返回值是*this,该成员函数的返回值类型是A&。
1 返回值是左值
func1()函数的返回值是类型A的引用,该返回值是左值。也就是说,此时返回的是调用该函数的对象本身,通过该返回值可以调用该对象的其他成员函数或者对其他成员变量进行赋值。
A a;
a.func1().i = 10;
此时类A的对象a的成员变量i的值是10。
2 const成员函数的返回值
在const成员函数中,不能修改对象的成员变量。当const成员函数返回值是*this时,表示返回的是一个const对象的引用。
const A& func2()const {
return *this;
}
其中,func2()函数是类A的const成员函数,该函数的返回值类型是const A&,而不是A&。此时,如果通过func2()函数的返回值修改对象的成员变量
a.func2().i = 100;
此时的报错信息为“error C3892: “a”: 不能给常量赋值”。
对C++类成员返回语句return *this的理解
经常会在类似 copy-assignment 的成员函数看到返回语句 return *this ,这类函数通常返回类型是所属类的引用。
类成员函数的隐式指针 class *this const 经过 *this的解引用后成为此对象本身。此时若成员函数返回类型是 class ,那么返回的将是 this 指向的对象实体的拷贝;
若返回类型是 class& ,那么将返回一个绑定在 this 指向的对象实体上的引用。
来源:https://blog.csdn.net/hou09tian/article/details/108862875


猜你喜欢
- 今天给大家介绍一下一个web 中经常会用到的截图(如:头像等)工具:Jcrop演示项目结构:效果图:这个很有用:看到这些,大家也想自己试试吧
- 微信开发API如何接入服务器,下面就为大家进行介绍一、说明* 本示例根据微信开发文档:http://mp.weixin.qq.com/wik
- 本文实例为大家分享了scrollView实现顶部图片下拉放大的具体代码,供大家参考,具体内容如下之前的scrollView顶部图片下拉放大在
- 本文实例讲述了C#使用WebClient登录网站并抓取登录后的网页信息实现方法。分享给大家供大家参考,具体如下:C#登录网站实际上就是模拟浏
- Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了。Android里的Service跟Windows里的Servic
- 单例有多种的写法,本例是懒汉式单例的一种写法。在高并发环境下需要注意的是:1.单例在并发访问并调用其相应的getInstance方法的时候也
- 使用xml编写动态sql在Resources文件夹下创建一个Mapper文件夹比如我们需要在User表中使用增删改查,创建UserMappe
- 本文实例为大家分享了RecylerView实现流布局的具体代码,供大家参考,具体内容如下第一步:添加依赖compile 'com.a
- 本文实例为大家分享了java实现打印正三角的具体代码,供大家参考,具体内容如下代码:package BasicType;/** * 封装一个
- 前言一般在c++中没有使用的变量会有警告,C#中也有,在QT中我们利用Q_UNSED可以直接消除这些警告,那么我们在C#中该如何做才能消除这
- 在实际业务中,当后台数据发生变化,客户端能够实时的收到通知,而不是由用户主动的进行页面刷新才能查看,这将是一个非常人性化的设计。有没有那么一
- logback自定义指定日志文件存储目录1、正常使用定义一个logback.xml配置文件即可:<?xml version="
- 简介在一般的网站中,比如Bilibili。当用户登录成功后,关闭浏览器后,下次重新进入网站,可以自动登录。本次就来探究如何实现这种自动登录、
- java 请求跨域问题解决方法实例详解新建Util类,在Util中添加下面方法: /* * response请求跨域公共设置
- 本文介绍了Android:利用SharedPreferences实现自动登录,具体如下:主要代码:public class LoginAct
- 本文实例讲述了Android实时文件夹创建方法。分享给大家供大家参考。具体如下:实时文件夹是一种用来显示由某个ContentProvider
- 多环境开发我们平常都是在自己的开发环境进行开发,当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用,等测试人员测试通过后,我
- 从 <<Windows Forms 2.0 Programming, 2nd Edition>> &nbs
- 1、何为依赖冲突Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的
- 一、Tomcat集成使用的成本越低,内部封装越复杂;1、依赖层级在SpringBoot框架的web依赖包中,引入的是内嵌Tomcat组件,基