当前位置:首页 > > 21ic电子网
[导读]要想理解 C++ 的 this 指针,我们可以先把下面的 C++ 代码转换成 C 代码。


C++ 程序到 C 程序的翻译 
 



要想理解 C++ 的 this 指针,我们可以先把下面的 C++ 代码转换成 C 代码:

5分钟简单了解C++ this指针的概念和作用

C 语言是没有类定义 class 关键词,但是有跟 class 类似的定义,那就是 struct 结构体。

m_price 变量是 Car 类的成员变量,那么我们可以把 Car 类和成员变量翻译成如下的 C 代码:

5分钟简单了解C++ this指针的概念和作用

SetPrice 函数是 Car 类的成员函数,但是 C 程序里是没有成员函数这种概念的,所以只能把成员函数翻译成全局的函数:

5分钟简单了解C++ this指针的概念和作用

为什么要加个 this 的指针呢?我们继续往下看。
在这里我们把上面 C++ 程序的 main 函数翻译 C 程序,是这样的:

5分钟简单了解C++ this指针的概念和作用

所以最终把上述的 C++ 程序 转换成 C 程序的代码如下:

5分钟简单了解C++ this指针的概念和作用

所以加 SetPrice 函数的第一个参数 this 指针的作用,就是为了给结构体 Car 域里的变量赋值。



this 指针的作用  



其作用就是 指向成员函数所作用的对象,所以 非静态成员函数中可以直接使用 this 来代表指向该函数作用的对象的指针。

下面的例子可以很好的说明 this 的作用:

5分钟简单了解C++ this指针的概念和作用

输出结果:
20000
20000

接下来我们看下面的代码,你觉得输出结果是什么呢?会出错吗?

5分钟简单了解C++ this指针的概念和作用

答案是正常输出 hello,你可能会好奇明明 p 指针是空的,不应该是会程序奔溃吗?别着急,我们先把上面的代码转换 C 程序,就能理解为什么能正常运行了。

5分钟简单了解C++ this指针的概念和作用

所以,实际上 每个成员函数的第一个参数默认都有个指向对象的 this 指针,上述情况下如果 this 指针指向的对象是空,相当于成员函数的第一个参数是 NULL,那么只要成员函数没有使用到成员变量,是可以正常执行。

那么下面这份代码执行时,就会奔溃了,因为 this 指针是空的,使用了空的指针指向了成员变量 i,程序就会奔溃。

5分钟简单了解C++ this指针的概念和作用


免责声明:本文系网络转载,版权归原作者所有。如有问题,请联系我们,谢谢!


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

21ic电子网

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

全球嵌入式技术领域的年度盛会2026嵌入式世界展(Embedded World 2026,简称EW26)于3月10日至12日在德国纽伦堡成功举办。作为物联网和边缘AI领域的领先企业,Silicon Labs(亦称“芯科科...

关键字: 物联网 边缘AI 嵌入式

3月10日至12日,2026年嵌入式世界展(Embedded World 2026,简称EW26)在德国纽伦堡展览中心成功举办。作为领先的边缘AI与智能音频等媒体处理技术和芯片解决方案提供商,XMOS以沉浸式演示与技术交...

关键字: 边缘AI 智能音频 嵌入式

在嵌入式系统开发中,SoC(System on Chip)的多样性始终是横亘在开发者面前的难题。以某工业物联网网关项目为例,其需同时支持NXP i.MX8M、Rockchip RK3566和Allwinner H616三...

关键字: Platform Driver模型 嵌入式

在高性能网络编程领域,事件驱动模型以其高效的I/O多路复用能力成为主流范式。不同于传统的多线程/多进程阻塞模型,事件驱动通过单一线程监听多个文件描述符的状态变化,以非阻塞方式处理I/O事件,显著减少了上下文切换开销和资源...

关键字: 事件驱动 C语言

在非易失性存储器领域,EEPROM(电可擦除可编程只读存储器)曾长期占据主流地位,广泛应用于各类电子设备的参数存储、日志记录等场景。但随着工业控制、汽车电子、医疗设备等领域对存储性能提出更高要求,FRAM(铁电随机存取存...

关键字: 存储器 可编程 嵌入式

康佳特将aReady.COM扩展至Arm架构模块,基于恩智浦i.MX 95处理器打造应用就绪的软硬件构建模块,集成操作系统、系统整合与IoT连接能力,赋能高价值应用快速落地

关键字: 处理器 IoT 嵌入式

3月12日,2026年中国家电及消费电子博览会(以下简称:AWE 2026)在上海盛大开幕。展会现场,场景化、系统化、一体化的家电解决方案成为行业焦点,消费者对家电的关注也已从基础的尺寸匹配,延伸至对“空间秩序感”和“视...

关键字: 消费电子 蒸烤箱 嵌入式

超高效NPU IP在资源受限设备中推进边缘AI,因而获得认可

关键字: 人工智能 嵌入式 NPU

上海2026年3月12日 /美通社/ -- 3月12日,2026中国家电及消费电子博览会(AWE 2026)在上海新国际博览中心和东方枢纽国际商务合作区展区正式启幕。本届展会以"AI科技•慧享未来"为...

关键字: 西门子 博世 嵌入式 洗碗机
关闭