news 2026/9/3 1:42:08

C++之this指针

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++之this指针

文章目录

  • 什么是this指针
  • this指针的应用

什么是this指针

  • 不同的对象各自拥有独立的成员变量,但它们共享同一份成员函数代码,那么在成员函数中如何区分所访问的成员变量隶属于哪个对象?
    • 是this指针
#include<iostream>usingnamespacestd;classStudent{public:Student(intage,conststring&name){m_age=age;m_name=name;}voidprint(){cout<<m_name<<":"<<m_age<<endl;}private:intm_age;string m_name;};intmain(void){Studentzs(12,"zhangsan");Student ls=Student(13,"lisi");zs.print();ls.print();return0;}
  • this是一个用于标识对象自身的隐式指针,代表对象自身的地址
  • 在编译类成员函数时,C++编译器会自动将this指针添加到成员函数的参数表中。在用类的成员函数时,调用对象会把自己的地址通过this指针传递给成员函数
  • 以上程序编译器编译后的样子,大致如下:
#include<iostream>usingnamespacestd;classStudent{public:Student(Student*this,intage,conststring&name){this->m_age=age;this->m_name=name;}voidprint(Student*this){cout<<this->m_name<<":"<<this->m_age<<endl;}private:intm_age;string m_name;};intmain(void){Studentzs(12,"zhangsan");// (&zs, 12, "zhangsan")Student ls=Student(13,"lisi");zs.print();//print(&zs)ls.print();//print(&ls)return0;}

this指针的应用

  • 需要显示使用this指针的常见场景:
    • 类中的成员变量和参数变量名字一样,可以通过this指针区分
    • 从成员函数中返回调用对象自身(返回自引用),支持链式调用
    • 在成员函数中销毁对象自身(对象自销毁)
#include<iostream>usingnamespacestd;classCounter{private:intcount;public:Counter(intcount=0){this->count=count;}Counter&add(void){++count;return*this;}voidprint(void){cout<<count<<endl;}voiddestroy(void){cout<<"this : "<<this<<endl;deletethis;//销毁对象本身}};intmain(void){Counter cnt;cnt.print();cnt.add().add().add();cnt.print();Counter*pcn=newCounter;pcn->add();pcn->print();pcn->destroy();cout<<"pcn: "<<pcn<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 23:45:06

Multisim14使用教程:电源稳压电路仿真演示

Multisim14线性稳压电路仿真&#xff1a;不是“点一下就出图”&#xff0c;而是读懂电源芯片怎么呼吸你有没有过这样的经历&#xff1f;调试一块刚打回来的音频板&#xff0c;示波器一接&#xff0c;输出电压上趴着一条清晰的120 Hz正弦纹波——像老式变压器在哼唱。查PCB没发现…

作者头像 李华
网站建设 2026/8/30 4:31:31

STM32F4固件库工程模板构建与寄存器原理详解

1. 工程模板的本质与学习价值新建一个STM32F4工程模板&#xff0c;绝非简单的文件复制粘贴操作。它是一次对STM32底层架构的系统性解剖&#xff0c;是嵌入式工程师建立工程化思维的关键起点。对于初学者而言&#xff0c;模板是理解代码组织逻辑的“骨架”&#xff1b;对于资深工…

作者头像 李华
网站建设 2026/8/24 13:34:10

java+vue基于springboot框架的社区智慧养老系统

目录社区智慧养老系统摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;社区智慧养老系统摘要 系统背景 随着人口老龄化加剧&#xff0c;传统养老模式难以满足多样化需求。基于SpringBoot和Vue的社区智慧养老系统整合物联网、…

作者头像 李华
网站建设 2026/8/21 20:30:29

芒格的“逆向思维“:在市场共识中寻找投资机会

芒格的"逆向思维"&#xff1a;在市场共识中寻找投资机会 关键词&#xff1a;芒格、逆向思维、市场共识、投资机会、价值投资 摘要&#xff1a;本文深入探讨了芒格的逆向思维在投资领域的应用&#xff0c;即在市场共识中寻找投资机会。首先介绍了文章的背景&#xff0…

作者头像 李华
网站建设 2026/8/30 22:17:55

数字图像处理篇---YPbPr颜色空间

一句话核心YPbPr是YUV的“物理实现版”&#xff0c;通过三根独立的线缆分别传输亮度(Y)和两个色差信号(Pb, Pr)&#xff0c;实现了比传统复合视频更好的画质。1. 为什么需要YPbPr&#xff1f;—— 画质追求在模拟视频时代&#xff0c;信号传输主要有三种方式&#xff1a;复合视…

作者头像 李华