為什么多態調用方法必須在運行時才能確定?
這個問題我思考過,簡單說下我的看法,如有錯誤歡迎指正。
這個問題和多態的實現機制有關,對于Java來說的話,多態調用和普通方法的調用是沒啥差別的,沒有額外開銷,所以也就無所謂編譯時確定還是運行時確定。
但對于C++完全不一樣,C++的多態機制是以虛表為基礎的,必須等到運行時才能確定,這也是C++多態被吐槽的原因,需要額外開銷,不過這樣做的目的是為了兼容C。
為什么多態調用方法必須在運行時才能確定?
這個問題我思考過,簡單說下我的看法,如有錯誤歡迎指正。
這個問題和多態的實現機制有關,對于Java來說的話,多態調用和普通方法的調用是沒啥差別的,沒有額外開銷,所以也就無所謂編譯時確定還是運行時確定。
但對于C++完全不一樣,C++的多態機制是以虛表為基礎的,必須等到運行時才能確定,這也是C++多態被吐槽的原因,需要額外開銷,不過這樣做的目的是為了兼容C。