首页 > 代码库 > GeekBand第四周学习笔记

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

GeekBand第四周学习笔记