新浪博客

类成员函数与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);

我的更多文章

下载客户端阅读体验更佳

APP专享