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/5/14 16:14:29

从零实现Keil5对ARM Cortex-M芯片包的支持下载配置

Keil5 芯片包&#xff1a;不是“下载一下就行”&#xff0c;而是嵌入式开发环境的硬件语义内核 你有没有遇到过这样的场景&#xff1f; 新建一个 Keil5 工程&#xff0c;点开 Project → Options → Target &#xff0c;Device 下拉框里空空如也&#xff1b; 或者 Flash 下…

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

快速理解ESP-IDF初始化流程中的/tools/idf.py调用逻辑

深入idf.py启动瞬间&#xff1a;为什么它总在找/tools/idf.py&#xff1f;你有没有在终端里敲下idf.py menuconfig&#xff0c;结果屏幕突然跳出一行红字&#xff1a;the path for esp-idf is not valid: /tools/idf.py not found.不是编译失败&#xff0c;不是配置错误&#x…

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

ollydbg下载及安装手把手教程:适合初学者的流程

OllyDbg部署实战&#xff1a;一个逆向新手真正能跑起来的调试环境 你刚下载完 OllyDbg&#xff0c;双击 ollydbg.exe &#xff0c;弹窗提示“Cannot open process”&#xff1b; 你照着某篇教程把插件扔进 Plugins 文件夹&#xff0c;重启后插件管理器却显示“0 plugins …

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

GLM-4V-9B效果对比:本镜像vs HuggingFace Demo在10类图文任务准确率统计

GLM-4V-9B效果对比&#xff1a;本镜像vs HuggingFace Demo在10类图文任务准确率统计 1. 为什么需要一次真实的效果对比&#xff1f; 你可能已经看过不少GLM-4V-9B的演示视频——图片上传、提问、秒级响应&#xff0c;看起来很惊艳。但真正把它用在实际任务里&#xff0c;比如…

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

Qwen3-TTS语音设计入门必看:自然语言指令控制语调/节奏/情感全解析

Qwen3-TTS语音设计入门必看&#xff1a;自然语言指令控制语调/节奏/情感全解析 1. 为什么说Qwen3-TTS是声音设计的新起点 你有没有试过这样操作&#xff1a;输入“请用温柔缓慢的语气读出这句‘今天的晚霞真美’”&#xff0c;系统立刻生成一段带着呼吸感、微微拖长尾音、语调…

作者头像 李华
网站建设 2026/5/23 6:34:21

Coze-Loop自动化办公实战:Excel复杂报表生成优化

Coze-Loop自动化办公实战&#xff1a;Excel复杂报表生成优化 1. 财务人员的Excel困局&#xff1a;从VBA宏到智能体重构 每天早上九点&#xff0c;财务部的小王准时打开Excel&#xff0c;开始处理上个月的销售数据。他需要从三个不同格式的原始表格中提取信息&#xff0c;用VB…

作者头像 李华