this指针的意义?

首先我们要知道类中函数和数据的布局:

如同上面这个图所示,每个对象都有自己的数据成员的位置,但是共同调用类的函数成员。

原因:

因为函数成员满足公用的条件,如果每个对象都保存一个函数成员,则消耗很大。


然后我们看下面代码:

根据上面所说,多个对象共同使用类的函数成员。

那么当对象a,b传到函数中时,函数怎样判断是哪个对象呢?

此时就使用到了this指针:上面的a其实被隐含转化成了this->a;

看下面的图:

扫描二维码关注公众号,回复: 12474303 查看本文章

  • 当第一次进入类构造函数时,this指针的地址和a的地址一样
  • 当第二次进入类构造函数时,this指针的地址和b的地址一样

这样通过this类就知道了是哪一个对象此时使用了共享的函数。


同一个类的对象,其成员函数地址是一样的,表示同一个类的对象的成员函数是共用的:

  1. 数据是独立的。
  2. 成员函数是共用的。

小知识:怎样通过函数指针调用函数

  • 函数指针定义模板:typedef void(A::*x)();
  • 使用:x m = &A::fun1;
  • 调用:(a.*m)();

代码:

#include<iostream>

using namespace std;

class A{
public:
	void fun1()
	{
		cout << "output something like this" << endl;
	}
};

typedef void(A::*x)();

int main()
{
	A a;

	x m = &A::fun1;

	(a.*m)();

	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46423166/article/details/113783719