news 2026/6/10 18:48:56

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/6/10 15:58:50

AI净界-RMBG-1.4保姆级教学:从GitHub源码编译到Docker镜像构建

AI净界-RMBG-1.4保姆级教学&#xff1a;从GitHub源码编译到Docker镜像构建 1. 为什么需要自己编译RMBG-1.4镜像 市面上已有不少一键式背景去除工具&#xff0c;但真正用过的人会发现&#xff1a;很多服务要么限制图片尺寸&#xff0c;要么处理发丝边缘时毛边明显&#xff0c;…

作者头像 李华
网站建设 2026/6/10 15:18:44

InstructPix2Pix入门指南:设计师转型AI提示工程师的5个关键认知

InstructPix2Pix入门指南&#xff1a;设计师转型AI提示工程师的5个关键认知 1. 从PS高手到“指令指挥官”&#xff1a;一场修图范式的悄然转移 你有没有过这样的时刻&#xff1a; 花半小时调色&#xff0c;结果客户说“再暖一点&#xff0c;但别太黄”&#xff1b; 精修人像3…

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

Swin2SR防炸显存黑科技:24G显卡也能处理4K图片的秘诀

Swin2SR防炸显存黑科技&#xff1a;24G显卡也能处理4K图片的秘诀 你有没有遇到过这样的窘境&#xff1a; 明明手头有一张512512的AI草稿图&#xff0c;想放大成高清海报打印&#xff0c;却在点击“超分”按钮后—— GPU显存瞬间飙红&#xff0c;服务直接崩溃&#xff0c;日志里…

作者头像 李华
网站建设 2026/6/10 13:38:14

ESP32-S3 PSRAM扩展配置:一文说清连接原理

ESP32-S3 PSRAM扩展实战手记&#xff1a;从焊错引脚到稳定跑满8MB的全过程你有没有试过——LVGL界面一动就卡顿&#xff0c;TensorFlow Lite模型加载直接失败&#xff0c;malloc()返回空指针&#xff0c;串口只打出半句日志就哑火&#xff1f;我第一次把APS6404L焊上ESP32-S3开…

作者头像 李华
网站建设 2026/6/10 13:37:49

Raspberry Pi OS 64位下ROS2安装超详细版教程

Raspberry Pi 5 ROS2 Humble&#xff1a;在 Bookworm 64 位系统上跑通一个真正能干活的机器人节点你刚拿到那块闪着金属光泽的树莓派5&#xff0c;拆开散热片、插好TF卡、烧入最新版 Raspberry Pi OS Bookworm 64-bit —— 然后兴冲冲敲下sudo apt install ros-humble-desktop…

作者头像 李华
网站建设 2026/6/10 13:33:02

Python基于Vue的健身房管理系统设计与实现 django flask pycharm

这里写目录标题项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 随着时代的…

作者头像 李华