0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析C++中this指针的理解以及作用

Q4MP_gh_c472c21 来源:小林coding 作者:小林coding 2021-06-27 11:24 次阅读

01

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

想要理解C++语言中的this指针,下面我们做一个举例,我们要先把下面的C++代码转换成C代码:

f2e45c3c-d6b2-11eb-9e57-12bb97331649.png

(1)大家知道,C语言中没有类定义class关键词,但是有跟class类似的定义关键词,就是struct结构体定义。m_height变量是Tree类的成员变量,那么我们就可以把Tree类和成员变量翻译成下面的C代码:

f3178a58-d6b2-11eb-9e57-12bb97331649.png

(2)SetHeight函数是Tree类的成员函数,但是C程序里面没有成员函数这个概念的,所以只能把成员函数翻译成全局的函数:

f3214476-d6b2-11eb-9e57-12bb97331649.png

那为什么还要再加个this指针呢?我们接着继续往下看。(3)接下来把C++中的main函数翻译成C程序,是下面这样的:

f3308c4c-d6b2-11eb-9e57-12bb97331649.png

所以最终把上面的C++程序转变为C程序的代码如下:

f3396024-d6b2-11eb-9e57-12bb97331649.png

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

02

this指针的作用

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

03

this指针和静态成员函数

静态成员函数不能使用this指针,因为静态成员函数相当于是共享的变量,不属于某个对象的变量。

04

小结

(1)通过将C++程序翻译成C程序的方式,来理解this指针,其作用就是指向非静态成员函数所作用的对象,每个成员函数的第一个参数实际上都有个默认this指针参数;(2)静态成员函数无法使用this指针。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3845

    浏览量

    61214
  • C++
    C++
    +关注

    关注

    21

    文章

    2061

    浏览量

    72846
  • C程序
    +关注

    关注

    4

    文章

    253

    浏览量

    35732

原文标题:C++中this指针的理解和作用

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎么理解指针指针

    怎么理解指针指针?其实这个概念并不难,只是把它放到实际应用中,容易造成困扰。
    的头像 发表于 02-23 16:46 261次阅读
    怎么<b class='flag-5'>理解</b><b class='flag-5'>指针</b>的<b class='flag-5'>指针</b>?

    数组与指针不能混用的情况

    数组与指针不能混用的情况  数组与指针是 C/C++ 中非常常见的特性和概念。然而,在某些情况下,数组与指针是不能混用的。这种情况通常涉及到数组的内存分配和数组的块拷贝。 首先,让我们
    的头像 发表于 12-07 13:46 270次阅读

    指针是什么

    指针是什么? 1.1 浅谈指针 理解指针的 两个要点: 指针是内存中一个最小单元的编号,也就是地址; 平时口语中说的
    的头像 发表于 11-24 15:50 1127次阅读
    <b class='flag-5'>指针</b>是什么

    C++智能指针的底层实现原理

    C++智能指针的头文件: #include 1. shared_ptr: 智能指针从本质上来说是一个模板类,用类实现对指针对象的管理。 template class shared_pt
    的头像 发表于 11-09 14:32 211次阅读
    <b class='flag-5'>C++</b>智能<b class='flag-5'>指针</b>的底层实现原理

    C语言中链表的作用是什么?

    C语言中指针用的很少,链表、文件操作几乎没用过,所以也不能理解到底有什么作用。各位有经常在做程序时会用到这些吗。
    发表于 11-06 06:23

    堆栈指针作用是什么?

    堆栈指针作用是什么
    发表于 11-02 08:10

    常见的一级指针参数有什么作用

    先来看一个最常用函数模型,函数func()参数为一个uint8_t 的指针类型,那这个函数有什么作用
    的头像 发表于 10-24 14:35 279次阅读
    常见的一级<b class='flag-5'>指针</b>参数有什么<b class='flag-5'>作用</b>

    C++程序设计精简版

    指针第 7 章 自定义数据类型 第 3 篇 基于对象的程序设计第 8 章 类和对象第 9 章 关于类和对象的进一步讨论第 10 章 运算符重载 第 4 篇 面向对象的程序设计第 11 章 继承与派生第 12 章 多态性与虚函数第 13 章 输入输出流第 14 章 C++
    发表于 10-09 07:26

    嵌入式C/C++语言精华文章集锦

    /C++编程,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。 经验不足的开发人员往往将所有需要传送的内容依顺序保存在 char 型数组,通过
    发表于 09-25 08:00

    C51的函数指针

    函数指针C编程语言的许多困难特性之一。 由于C编译器对8051体系结构的独特要求,函数指针和可重入函数面临着更大的挑战。 这主要是由于传递函数参数的方式所致。 通常,(对于除8051
    发表于 09-04 08:29

    C++函数指针和回调函数详解

    指针是一个变量,是用来指向内存地址。
    发表于 08-21 15:07 127次阅读
    <b class='flag-5'>C++</b>函数<b class='flag-5'>指针</b>和回调函数详解

    C++演示的推理速度比Python演示的推理速度更快是为什么?

    在同一主机机上采用相同型号的 Ran Object Detection C++ 演示 和 对象检测 Python 演示 。 C++ 演示的推理速度比 Python 演示的推理速度
    发表于 08-15 06:52

    C++ std::tie函数的作用和用法

    C++中std::tie函数的作用就是从元素引用中生成一个tuple元组,其在头文件中定义
    的头像 发表于 07-18 17:28 511次阅读

    浅谈C/C++里的指针

    指针是C和C++中的难点和重点。指针是C的灵魂。我不想重复大多数书上说得很清楚的东西,只是把我看过的书中说得不清楚或没有说,而我又觉得我理解得有点道理的东西写出来。目的是:1、通过写这
    发表于 06-28 10:21 296次阅读

    如何理解C++中的void?

    首先void*中的void代表一个任意的数据类型,"星号"代表一个指针,所以其就是一个任意数据类型的指针
    的头像 发表于 03-30 15:01 2855次阅读
    如何<b class='flag-5'>理解</b><b class='flag-5'>C++</b>中的void?