逆向之虚函数执行分析
同名函数调用
- 函数重复定义:
在C++中,同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”
- 不同层次的函数调用:
在类的继承层次结构中在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。编译系统按照同名覆盖的原则决定调用的对象。
虚函数
- 虚函数的定义:
虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。
- 虚函数调用:
在程序中不是通过不同的对象名去调用不同派生层次中的同名函数,而是通过指针调用它们。例如,用同一个语句“pt>display();”可以调用不同派生层次中的display函数,只需在调用前给指针变量pt赋以不同的值(使之指向不同的类对象)即可。
- 虚函数的优势:
实现多态。
虚函数的调用方法
(1)指针
(2)引用
(3) 对象