C++中this指针的特性,存放位置,能否为空?


一、this指针的特性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们学习过C++知道,成员函数没有直接存放在类而是放在了公共代码区,这样当多个对象调用同一个函数就不需要再创建一个函数成员了。

这个时候我们有一个问题:
Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当s1调用 Init 函数时,该函数是如何知道应该设置s1对象,而不是设置s2对象呢?

C++中通过引入this指针解决该问题,即:C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有“成员变量”的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
在这里插入图片描述
在这里插入图片描述

二、this指针存在哪里?

this是形参,所以跟普通参数一样存在函数调用的栈区里面。

三、this指针可以为空吗?

this指针是可以为空的,只要我们不对它去进行解引用就不会报错,也就是不需要通过this指向当前对象并对其进行操作时才可以为空(当我们在其中什么都不放或者在里面随便打印一个字符串)

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_74774759/article/details/130671009