类成员函数与this指针
2022-06-22 16:07阅读:
类成员函数地址和普通函数地址一样,它不占用对象空间,只有一份代码。调用类成员函数时,会将对象指针(也就是this指针)作为第一个参数传递给函数。考虑下面代码
class A
{
int i;
public: void Hello() {
cout << 'hello' << endl; }
};
int main()
{
A * p = NULL;
p->Hello();
//结果会怎样?
}
调用Hello()不需要通过p去寻址,即使p为NULL,p->Hello()也不会崩溃。编译器找到Hello()地址调用,将this=p,
调用Hello(this)。
类似:
A p;
p.Hello();
相当于:
this = &p;
Hello(this);