文章目录
- 一、this指针的特性
- 二、this指针存在哪里?
- 三、this指针可以为空吗?
一、this指针的特性
我们学习过C++知道,成员函数没有直接存放在类而是放在了公共代码区,这样当多个对象调用同一个函数就不需要再创建一个函数成员了。
这个时候我们有一个问题:
Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当s1调用 Init 函数时,该函数是如何知道应该设置s1对象,而不是设置s2对象呢?
C++中通过引入this指针解决该问题,即:C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有“成员变量”的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
二、this指针存在哪里?
this是形参,所以跟普通参数一样存在函数调用的栈区里面。
三、this指针可以为空吗?
this指针是可以为空的,只要我们不对它去进行解引用就不会报错,也就是不需要通过this指向当前对象并对其进行操作时才可以为空(当我们在其中什么都不放或者在里面随便打印一个字符串)