簡體   English   中英

編譯器和鏈接器如何處理類和函數

[英]How does the compiler and linker handle classes and functions

有人可以幫我理解一下,為什么我可以在兩個不同的編譯單元中擁有相同的類而不會出現鏈接器錯誤,但是在不同的編譯單元中卻沒有相同的功能嗎?

提前謝謝了。

通常,鏈接器最了解函數和變量(非成員變量)。

鏈接器關於類的信息通常與繼承的實現有關。 成員函數將被轉換為定期的功能,額外的隱含this參數。 訪問成員通常只是this指針的偏移量。

但是,如果您將繼承添加到類中,或者使用typeid或type_info,則可能會開始遇到許多奇怪的行為。

由於使用相同名稱的方法(包括特殊成員,例如默認ctor或operator =)中的一種定義錯誤,導致兩個組合單元中的同一類可能導致格式錯誤的程序。

我的特殊成員函數是隱式內聯定義的,因此我們可以輕松地獲得不需要診斷的格式錯誤的程序。

因此,我破壞了記憶; 具有相同名稱和不同內存布局的兩個矩陣類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM