C++
编译器里给每个
“
非静态的成员函数
“
增加了一个隐藏的
指针参数
,让该指针指向当前对象
(
函数运行时调用该函数的对象
)
在函数体中所有
“
成员变量
”
的操作,都是通过该
指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成
。
该指针参数即为this指针
this指针的功能:即在非静态成员函数调用时,可以更准确的访问到实例化对象中的成员属性this指针的类型:类的类型* const,const直接修饰指针本身,即this指针本身的指向不能被改变非静态成员函数不具备该隐藏参数(this指针),因为静态成员函数并不具体属于哪个对象,故其没有指向某个对象的this指针
this指针本质上是非静态成员函数的第一个形参(被隐藏的),当对象调用成员函数时,才将对象地址作为实参传递给“this”形参,所以对象中并不存储this指针。
ps:一般情况下(在vs环境下)是由编译器通过ecx寄存器自动传递,无需用户传递
由于this指针是作为实参传递的,所以this指针都是存储在栈空间中。
当非静态成员函数被调用时,如果函数内部并不涉及到对象内的具体成员属性则this指针可以为空,即“this = nullptr”