this指针
Q:啥是this指针?
A: C++编译器给每个“成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访 问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
Q:this指针占不占大小?
A:不占,因为是由编译器帮我们加的,帮我们传递的
Q:this指针的地址里面放了啥?
A:类的对象的首地址,请看下面的代码,自行运行
#include<iostream>
using namespace std;
class A{
public:
void get_this_address()
{
cout<<this<<endl;
}
private:
};
int main()
{
A a;
cout<<&a<<endl;
return 0;
}
Q:why静态成员函数没办法操作this指针?
A:静态成员函数先于对象存在,而this是对象的首地址,所以没办法操作this,同时我们知道非静态成员函数的参数中是有this的,this是非静态成员函数的一个隐藏的参数(hidden parameter)。
补充:this永远指向当前对象、可以解决命名冲突、*this指向对象的本体、非静态成员函数才有this指针 this指针只能在“成员函数”的内部使用 this指针的本质是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象这种不存储this指针 this指针是成员函数第一个隐含的指针形参,一般情况由编译器ecx寄存器自动传递,不需要用户传递
Comments | 2 条评论
博客作者 agony
测试
博客作者 没有鱼丸只有粗面
我也来测试一下评论
(=・ω・=)