非虛函數的綁定

非虛函數不會佔用子類或者是對象中的內存,它的綁定由編譯器來完成。

如果是該函數和調用它的程序同步編譯,則在compile-time 綁定;

如果該函數是在動態庫裏面的,則在load-time綁定;

如果該函數是在靜態庫裏面的,則在link-time綁定。




PS:動態鏈接庫和靜態鏈接庫區別(摘自百度百科):

靜態鏈接庫是.lib格式的文件,一般在工程的設置界面加入工程中,程序編譯時會把lib文件的代碼加入你的程序中因此會增加代碼大小,你的程序一運行lib代碼強制被裝入你程序的運行空間,不能手動移除lib代碼。動態鏈接庫是程序運行時動態裝入內存的模塊,格式*.dll,在程序運行時可以隨意加載和移除,節省內存空間。
在大型的軟件項目中一般要實現很多功能,如果把所有單獨的功能寫成一個個lib文件的話,程序運行的時候要佔用很大的內存空間,導致運行緩慢;但是如果將功能寫成dll文件,就可以在用到該功能的時候調用功能對應的dll文件,不用這個功能時將dll文件移除內存,這樣可以節省內存空間。

發佈了25 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章