this指针是指向虚函数表的指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this指针是指向虚函数表的指针相关的知识,希望对你有一定的参考价值。

C++中this的选择题 下列说法正确的是??
A .this指针存在于每个函数之中
B.在类的非静态函数中This指针指向调用该函数的对象
C.this指针是指向虚函数表的指针
D.this指针是指向类的函数成员的指针

参考技术A B.在类的非静态函数中This指针指向调用该函数的对象

GeekBand第四周学习笔记

vptr&vtbl

 
技术分享

virtual point 

每一个带有虚函数的对象都会包涵一个指向虚函数表的指针,子类会继承父类的虚函数,所以子类中也会有虚函数表

virtual table

虚函数表拥有一个或复数个虚函数指针,每一个虚函数指针指向实际函数地址,当子类重写了父类的虚函数,子类虚函数表中指向父类此虚函数的指针将会更改指向重写后函数的地址。技术分享

class A{
public:
	virtual void vfunc1();
	virtual void vfunc2();
	void func1();
	void func2();

private:
	int m_data1, m_data2;
};

class B :public A{
public:
	virtual void vfunc1();
	void func2();
private:
	int m_data3;
};

class C :public B{
public:
	virtual void vfunc1();
	void func2();
private:
	int m_data1, m_data4;
};

this point

以上是关于this指针是指向虚函数表的指针的主要内容,如果未能解决你的问题,请参考以下文章

虚函数指针和虚函数表

虚函数表存放在哪里

GeekBand第四周学习笔记

虚函数逆向分析

虚函数和基类中的this指针的问题!

C++中的虚函数以及虚函数表