news 2026/2/17 5:52:28

16.this指针

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
16.this指针

生活例子(核心类比)

假设你是一家奶茶店的店员(对应类的成员函数),店里有很多顾客(对应类的对象):

  • 当顾客A对你说:“我要一杯珍珠奶茶”,你知道要把奶茶递给顾客A
  • 当顾客B对你说:“我要一杯柠檬水”,你知道要把柠檬水递给顾客B

这里的“我”,就相当于C++里的this指针——它帮你明确“当前服务的是哪个对象”。

放到C++里:

  • 类的成员函数就像“店员”,能处理“做奶茶”“递奶茶”这些操作;
  • 类的对象就像“顾客”,每个对象调用成员函数时,函数需要知道“给谁服务”;
  • this指针就是函数里的“当前顾客标识”,明确告诉函数:你现在操作的是这个对象的成员。

极简代码理解

咱们写一个超简单的类,去掉复杂语法,只看this的核心作用:

#include <iostream> using namespace std; // 定义一个"人"的类(相当于奶茶店的服务规则) class Person { public: // 成员变量:每个人的名字(相当于顾客的需求) string name; // 成员函数:自我介绍(相当于店员的服务动作) void sayHello() { // this->name 就是"当前这个人"的名字 // 翻译成人话:"我是XXX",这里的"我"就是this cout << "我是" << this->name << endl; // 新手注意:平时写cout << "我是" << name << endl; 也能运行 // 因为编译器会自动把name变成this->name,this是"隐藏"的 } }; int main() { // 创建两个对象(两个顾客) Person zhangsan; zhangsan.name = "张三"; Person lisi; lisi.name = "李四"; // 调用成员函数(顾客找店员服务) zhangsan.sayHello(); // 输出:我是张三 → this指向zhangsan这个对象 lisi.sayHello(); // 输出:我是李四 → this指向lisi这个对象 return 0; }

必懂的3个关键(只记这3点就够了)

  • this是“隐藏的地址”
    你不用定义this,也不用传递它——编译器会自动帮你做。比如调用zhangsan.sayHello()时,编译器会偷偷把zhangsan的地址传给sayHello()里的this,所以this就指向了zhangsan
  • this最常用的场景:区分“重名”
    新手最容易遇到的问题:函数参数和成员变量名字一样,分不清谁是谁。比如:
class Person { public: string name; // 构造函数:参数名也是name,和成员变量重名 Person(string name) { // 错误写法:name = name; → 编译器不知道把谁赋值给谁 // 正确写法:this->name = name; // this->name = 当前对象的name(成员变量) // 等号右边的name = 函数参数的name this->name = name; } };
  • this只能在“非静态成员函数”里用
    简单记:只要函数前面加了static(静态函数),就没有this——因为静态函数是“类共用的”,不属于某个具体对象(比如奶茶店的“营业时间”公告,不是给某个顾客的,而是所有顾客都能看,所以不需要“当前顾客”)。

总结(新手版)

  1. this就是成员函数里的“当前对象标识”,告诉函数“你现在操作的是这个对象”,类比生活里的“我”;
  2. 不用手动创建this,编译器自动加,核心作用是区分重名的成员变量和参数;
  3. 只有非静态成员函数里能用到this,静态函数里没有。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/12 15:35:23

【YOLOv13多模态创新改进】联合Mamba创新首发| SCI 一区2025| 引入CMFM 跨模态特征融合Mamba模块,实现 RGB与红外等多模态特征的高效融合,含多种创新改进,顶会顶刊发文热点

一、本文介绍 🔥本文给大家介绍使用 CMFM 跨模态特征融合Mamba模块改进 YOLOv13 多模态融合目标检测框架,可在保持实时性的前提下实现高效稳定的跨模态特征融合,充分利用可见光与红外信息的互补优势,显著提升复杂环境下的检测鲁棒性。该模块基于 Mamba 状态空间模型进行…

作者头像 李华
网站建设 2026/2/12 21:35:22

sql语言之分组语句group by

在sql语言中&#xff0c;group by 是分组语言语法是select 表达式 from 表名 group by 分组字段比如说上图的数据表&#xff0c;这是部分截图&#xff0c;表名叫table_tom&#xff0c;假如要按city字段进行分组&#xff0c;计算score各字段总和select sum("score") a…

作者头像 李华
网站建设 2026/2/17 6:35:39

jsp蛋糕甜品店管理系统4fx6j--(程序+源码+数据库+调试部署+开发环境)

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。 系统程序文件列表 用户,商品分类,商品尺寸,商品信息 开题报告内容 一、研究背景及意义 随着互联网的普及和消费者购物习惯的改变&…

作者头像 李华
网站建设 2026/2/11 18:33:58

PADS 多层板设计时怎么设置满足3W间距 或 不在某参考层布线

如何设置满足3W间距 在router中 右键选择网络 双击你要设置的网络 弹出 选择安全间距给这个网络添加一个特殊安全间距 比如其3w需10mil 我就 这样其与其他导线的安全距离就为10mil了 你布线时drc打开一不满足就会报错提示你 设置在参考层内不布线 如果你想要在哪个网络不…

作者头像 李华
网站建设 2026/2/8 22:52:45

省心绘制财务核算流程图零门槛操作画图超便捷高效

做财务工作的朋友&#xff0c;大概率都有过这样的困扰&#xff1a;领导让画一份财务核算流程图&#xff0c;自己要么不会用专业工具&#xff0c;要么工具操作太复杂&#xff0c;画一张图要耗费大半天时间&#xff1b;新手入门更是无从下手&#xff0c;对着空白画布不知道从何开…

作者头像 李华
网站建设 2026/2/15 10:57:53

博泰车联网智能座舱 Android 开发工程师的核心能力与实战挑战

博泰车联网科技(上海)股份有限公司 Android 应用开发工程师 职位信息 岗位职责: ① 参与需求分析,与产品、设计团队协同,精准把握智能座舱应用业务与用户需求; ② 开展性能优化,内化用户、CPU等关键指标,编写测试计划并执行多种测试,保障应用稳定; ③ 参与模块方案…

作者头像 李华