C++之this指针总结(二百二十)

news2024/12/23 3:44:47

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解C++之his指针应用实例。

C++中的this指针是一个特殊指针,它指向当前对象的地址。它只能在成员函数(方法)中使用,并且用于引用当前对象的成员变量和成员函数。通过this指针,你可以在成员函数内部访问和操作当前对象的成员。

当你在一个成员函数中引用一个成员变量时,编译器会将其解析为this->variable,其中this就是指向当前对象的指针。这使得你可以区分同名的局部变量和成员变量。

2.应用实例

<1>.代码示例

#include <iostream>
using namespace std;

class Parent{
public:
  //指向当前对象的副本
  Parent test1(){
    printf("xxx---------->%s(), line = %d, this = %p\n",__FUNCTION__,__LINE__,this);
    return *this;
  }
  //指向当前对象的指针
  Parent *test2(){
    printf("xxx---------->%s(), line = %d, this = %p\n",__FUNCTION__,__LINE__,this);
    return this;
  }
  //指向当前对象的引用&
  Parent &test3(){
    printf("xxx---------->%s(), line = %d, this = %p\n",__FUNCTION__,__LINE__,this);
    return *this;
  }
};

int main(){
  Parent pt;
  pt.test1();
  pt.test2();
  pt.test3();
}

<2>.this指针用法区别

  1. test1 函数返回值类型为 Parent,使用值拷贝的方式返回了当前对象的副本。在函数内部,使用 *this 获取当前对象的引用,然后返回该引用所指向的副本。这意味着调用 test1 后,会创建一个新的 Parent 对象并将其拷贝到调用方。
  1. test2 函数返回值类型为 Parent 指针 (Parent*),它返回了指向当前对象的指针。在函数内部,使用关键词 this 获取了指向当前对象的指针,并将该指针直接返回。这意味着调用 test2 后,会得到指向调用对象的指针。
  1. test3 函数返回值类型为 Parent 的引用 (Parent&),使用引用的方式返回了当前对象的引用。在函数内部,使用 *this 获取当前对象的引用,并将该引用直接返回。这意味着调用 test3 后,会得到指向调用对象的引用。

<3>.总结

这三种方式的区别:
1.test1 返回当前对象的副本
2.test2 返回指向当前对象的指针
3.test3 返回指向当前对象的引用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot启动输出了Mybatis-plus和Pagehelper的图标的解决方法

SpringBoot启动输出了Mybatis-plus和Pagehelper的图标 解决方法 Mybatis-plus mybatis-plus可以通过下面的配置关闭图标输出 mybatis-plus:global-config:banner: false #启动时不输出mp的图标pagehelper pagehelper要麻烦一些&#xff0c;需要在jvm的启动参数中进行配置…

使用docker安装部署kuboard并导入k8s集群

1 官网地址 https://kuboard.cn/install/v3/install.html#kuboard-v3-x-%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E2 找到推荐的安装方式 先点击左上角的安装 3 进入安装引导页面 复制出来里面的docker 命令&#xff0c;根据需求修改外面端口映射&#xff0c;KUBOARD_ENDPOINT…

Docker安装ElasticSearch/ES 7.10.0

目录 前言安装ElasticSearch/ES安装步骤1&#xff1a;准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 安装步骤2&#xff1a;拉取ElasticSearch镜像1 拉取镜像2 查看已拉取的镜像 安装步骤3&#xff1a;创建容器创建容器方…

Chatgpt solve | 井底之蛙

这是一个经典的物理问题&#xff0c;我们可以使用Python来解决它。青蛙每分钟爬升4米&#xff0c;然后滑下2米&#xff0c;所以每分钟净爬升2米。 我们可以编写一个循环来模拟这个过程&#xff0c;直到青蛙爬出井口。下面是一个Python程序来解决这个问题&#xff1a; def time_…

算法通关村第二关——链表反转(黄金)

算法通关村第二关——链表反转黄金挑战 K 个一组翻转链表方法一&#xff1a;自己写的方法二&#xff1a;头插法 K 个一组翻转链表 25. K 个一组翻转链表 方法一&#xff1a;自己写的 我自己写的方式有点长&#xff0c;属于一点点一路路解决那种&#xff0c;其实用到的是穿针…

安卓抓jdwskey

安装京东&#xff0c;VNET VNET下载地址 https://www.vnet-tech.com/zh/ 2给权限 打开 VNET --点击右下角 ▶ --保存 CA.pem 证书 --打开手机系统设置搜索 证书–点击安装刚刚保存的 CA.pem 如果开始出现数据表示已经有权限抓包了&#xff0c;下面给权限跳过&#xff0c;直接开…

第15篇ESP32 idf框架 wifi联网_WiFi AP模式_手机连接到esp32开发板

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 ​​​​​​第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播…

Haproxy集群调度器与部署

目录 一、Haproxy介绍&#xff1a; 1.Haproxy应用分析&#xff1a; 2.Haproxy的特性&#xff1a; 3.Haproxy常见的调度算法&#xff1a; 4.LVS、Nginx、HAproxy的区别&#xff1a; 4.1 Haproxy与lvs对比&#xff1a; 4.2 Haproxy与nginx对比&#xff1a; 5. Haproxy优点&#x…

设计模式之十:状态模式

状态模式通过改变对象内部的状态来帮助对象控制自己的行为。 这是一张状态图&#xff0c;其中每个圆圈都是一个状态。 最简单&#xff0c;第一反应的实现就是使用一个变量来控制状态值&#xff0c;并在方法内书写条件代码来处理不同情况。 package headfirst.designpatterns.…

微服务架构介绍

系统架构的演变 1、技术架构发展历史时间轴 ①单机垂直拆分&#xff1a;应用间进行了解耦&#xff0c;系统容错提高了&#xff0c;也解决了独立应用发布的问题&#xff0c;存在单机计算能力瓶颈。 ②集群化负载均衡可有效解决单机情况下并发量不足瓶颈。 ③服务改造架构 虽然系…

操作系统备考学习 day3 (2.1.1 - 2.1.6)

操作系统备考学习 day3 二、进程与线程2.1 进程与线程2.1.1 进程的概念和特征2.1.2 进程的状态与转换2.1.3 进程的组织2.1.4 进程控制2.1.5 进程间通信&#xff08;IPC&#xff09;2.1.6 线程和多线程模型 二、进程与线程 2.1 进程与线程 2.1.1 进程的概念和特征 进程&#…

通达OA漏洞检查工具V1.3

​注意 注意&#xff1a;通达OAv11.6前台任意文件删除任意文件上传漏洞会删除auth.inc.php&#xff0c;这可能会损坏OA系统谨慎操作 工具更新 本工具webshell采用蚁剑连接&#xff0c;密码均为x TongdaOATool本工具支持以下漏洞的验证和利用&#xff1a; 1、通达OA任意用户…

Vue通过ref修改 <el-input-number> 增减按钮的样式

Vue 为一个 <el-input-number> 设置了ref为‘inputNumberRef’, 通过这个ref获取<el-input-number>组件中的增、减按钮所在的<i>标签&#xff0c;并将它们的class分别改为el-icon-plus 和 el-icon-minus。 可以通过以下代码实现&#xff1a; <template&g…

Long类型雪花算法ID返回前端后三位精度缺失问题解决

目录 一、问题描述二、问题复现1.Maven依赖2.application.yml 配置3.DemoController.java4.snowflakePage.html 页面5.DemoControllerAdvice.java 监听6.问题复现 三、原因分析四、问题解决方案一方案二 一、问题描述 Java 后端使用雪花算法生成 Long 类型的主键 ID&#xff0…

【Unity】万人同屏, 从入门到放弃之——Entities 1.0.16性能测试

当前测试使用的Entities版本为1.0.16 Unity Entities 1.0.16使用方法&#xff1a; Create a component for the spawner example | Entities | 1.0.16 1. 创建SubScene 2. 在SubScene下创建挂载Authoring脚本&#xff1a; Authoring是MonoBehaviour脚本&#xff0c;主要用来…

网页的快捷方式打开自动全屏--Chrome、Firefox 浏览器相关设置

Firefox 的全屏方式与 Chrome 不同&#xff0c;Chrome 自带全屏模式以及APP模式&#xff0c;通过简单的参数即可设置&#xff0c;而Firefox暂时么有这个功能&#xff0c;Firefox 的全屏功能可以通过全屏插件实现。 全屏模式下&#xff0c;按 F11 不会退出全屏&#xff0c;鼠标…

【微信小程序】文章样式,标题样式,及设置背景~

| background-size 设置背景图片大小。图片可以保有其原有的尺寸&#xff0c;或者拉伸到新的尺寸&#xff0c;或者在保持其原有比例的同时缩放到元素的可用空间的尺寸。 | background-size: cover;适配屏幕大小 文章样式&#xff0c;标题样式&#xff0c;及设置背景~ index.w…

AGV小车、机械臂协同作业实战02-开源opentcs 项目调研

这个项目是从0到1 的一个过程&#xff0c;碰到这种项目给我的第一反应就是先查查有没有轮子&#xff0c;往往站在巨人的肩膀上 事情就会变得简单多了。各种搜索后发现网站这类的项目少之又少&#xff0c;唯一一个值得参考的项目 就是Opentcs 了&#xff0c;而且这个项目最近也在…

echarts-图表(非常规图开发记录)

echarts-图表&#xff08;非常规图开发记录&#xff09; 环形刻度图横向左右柱形图3D饼图渐变柱子-柱状图3D柱状图雷达图动态滚动图-并加图片 以下图表数据源&#xff0c;allData.value 均为如下格式 [{"id": "1","name": "在职在岗",…

企业邮箱功能详解:提升办公效率的多面手

企业邮箱是一种专为企业打造的电子邮件服务&#xff0c;它可以帮助企业提高工作效率、加强内部沟通和保护企业信息安全。本文将介绍企业邮箱的一些主要功能和优势。 一、邮件收发 企业邮箱提供了一个专门的电子邮件账户&#xff0c;员工可以通过这个账户收发工作相关的邮件。相…