- 静态联编动态联编
- 静态多态(就是函数重载)和动态多态
- 静态多态:函数重载,运算符重载
- 动态多态:
- //先有继承关系
- //父类中有虚函数,子类重写父类中的虚函数
- //父类的指针或引用 指向子类的对象
- 静态多态在编译阶段绑定地址,地址早绑定,静态联编
- 动态多次在运行阶段绑定地址,地址晚绑定,动态联编
- 多态原理
- 当父类写了虚函数后,类内部结构发生改变,多了一个vfptr
- vfptr 虚函数表指针 ---- > vftable 虚函数表
- 虚函数表内部记录着 虚函数的入口地址
- 当父类指针或引用指向子类对象,发生多态,调用是时候从虚函数中找函数入口地址
- 虚函数 关键字 virtual
- 利用指针的偏移调用 函数
- ((void()()) ((int )(int *)animal)) ();
- typedef void( __stdcall *FUNPOINT)(int);
- (FUNPOINT (((int)(int)animal + 1)))(10);