美文网首页
C++中this指针的理解和用法

C++中this指针的理解和用法

作者: 割麦子洁 | 来源:发表于2018-05-29 15:02 被阅读0次

关于this指针的一个精典回答:

    当你进入一个房子后,

    你可以看见桌子、椅子、地板等,

    但是房子你是看不到全貌了。

    对于一个类的实例来说,

    你可以看到它的成员函数、成员变量,

    但是实例本身呢?

    this是一个指针,它时时刻刻指向你这个实例本身。 

个人理解:

class类就好比这座房子,this就好比一把钥匙,通过钥匙来打开了这座房子的门,那么里面的东西就随意你取用了

 即:this是指向实例化对象本身时候的一个指针,里面存储的是对象本身的地址,通过该地址可以访问内部的成员函数和成员变量。

为什么需要this?因为this作用域是在类的内部,自己声明一个类的时候,还不知道实例化对象的名字,所以用this来使用对象变量的自身。在非静态成员函数中,编译器在编译的时候加上this作为隐含形参,通过this来访问各个成员(即使你没有写上this指针)。

例如a.fun(1)<==等价于==>fun(&a,1)

 this的使用:1)在类的非静态成员函数中返回对象的本身时候,直接用return *this(常用于操作符重载和赋值、拷贝等函数)。2)传入函数的形参与成员变量名相同时,例如:this->n = n (不能写成n=n)

程序举例

a.对象point1调用MovePoint(2,2)的时候,即将point1对象的地址传递给了this指针

b.编译器编译后的原型应该是void MovePoint(Point *this, int a, int b)

c.在函数体中可以写成{this->x += a; this->y += b;}

d.也等价为point1.x += a;point1.y += b。(指针变量通过->访问成员变量(函数),对象通过.)

相关文章

  • C++中this指针的理解和用法

    关于this指针的一个精典回答: 当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。...

  • const理解

    关于const *和* const的理解,可以参考[C C++ OC指针常量和常量指针区别]这篇文章。 该篇文章中...

  • 2017-03-14 C++阶段

    Task List 1. 回顾引用用法 2. 掌握c++中 new开辟空间的用法 3. 回顾数组指针以及const...

  • 浅谈C/C++的指针,引用

    前言 随手也写一下关于ndk开发中关于引用和指针的大致用法,就不上代码了,简单的写一下。 关于指针* C++可以看...

  • C++ this指针

    C++中this指针的理解 1、成员变量和入参重名时,如果不想修改名字,需要使用this指针引用成员变量。2、静态...

  • 0x00 JNI预备知识

    1.JNI结构体指针及用法 在C中是二级指针,在C++中是一级指针。指向一堆定义好的函数(详情见oralcle官网...

  • C语言入门之指针

    目的: 通过以下学习,希望能理解指针的概念,理解指针和数组的关系,理解指针的定义,掌握指针的用法。 1. 简述 用...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • go语言指针类型的使用

    go语言的指针类型 简单地说go语言的指针类型和C/C++的指针类型用法是一样的,除了出去安全性的考虑,go语言增...

  • JNI基础 -- C++基础知识(命名空间)

    命名空间 因为在C++中没有包的概念,为了解决重名问题,就有了命名空间的概念,用法很简单: 引用和指针 引用更为规...

网友评论

      本文标题:C++中this指针的理解和用法

      本文链接:https://www.haomeiwen.com/subject/picajftx.html