逆向之虛函數執行分析
同名函數調用
- 函數重複定義:
在C++中,同一類中是不能定義兩個名字相同、參數個數和類型都相同的函數的,否則就是“重複定義”
- 不同層次的函數調用:
在類的繼承層次結構中在不同的層次中可以出現名字相同、參數個數和類型都相同而功能不同的函數。編譯系統按照同名覆蓋的原則決定調用的對象。
虛函數
- 虛函數的定義:
虛函數的作用是允許在派生類中重新定義與基類同名的函數,並且可以通過基類指針或引用來訪問基類和派生類中的同名函數。
- 虛函數調用:
在程序中不是通過不同的對象名去調用不同派生層次中的同名函數,而是通過指針調用它們。例如,用同一個語句“pt>display();”可以調用不同派生層次中的display函數,只需在調用前給指針變量pt賦以不同的值(使之指向不同的類對象)即可。
- 虛函數的優勢:
實現多態。
虛函數的調用方法
(1)指針
(2)引用
(3) 對象