生活随笔
收集整理的這篇文章主要介紹了
2020-10-27(汇编收获)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從匯編的角度去理解指針和引用從匯編角度去理解靜態數據成員仿佛就是一個全局變量,放在內部就相當于只能由類內部來訪問,限制了它的訪問權限。更加安全。靜態數據成員ds段的固定的地址值,數據段。ps:兩個類中定義了相同的靜態數據成員 ,相當于定義了兩個不同的全局變量!從匯編角度以及內存角度去理解虛函數的調用,利用了虛表null就是一個宏定義 #define null 0 表示整型,nullptr專門表示指針為空,既0編譯模板所在的源文件時,沒有發現任何人使用此模板,是不會生成相應的函數實現的!所以模板放在頭文件里面,不會放聲明和實現分開來放,一般放在hpp中!編譯時把每個cpp源文件分開編譯成obj文件,鏈接時來糾正main函數里面call的地址!(既模板未被使用時,不會被實例化出來,也就不會生成相應的函數代碼)所以模板的聲明和實現如何分離到頭文件和源文件中,會導致鏈接錯誤默認參數只能寫在函數聲明里面,不能寫在實現里面!c語言中沒有函數重載!extern “c”代表后面的東西按照C語言的方式去編譯c++可以允許對某些式子賦值,eg:(a=b)=2,((a>b)?a:b)=2;但c語言不可以 .c語言不支持函數重載,c++和java支持函數重載c++中的cpp文件有個默認的宏定義叫做#define __cplusplus(注意,開頭是兩個下劃線 ),不用自己寫,文件默認有的。c文件前面沒有這個宏定義。#ifdef +宏定義 #endif (如果你定義了這個宏定義,才讓你編譯,如果沒有,則不編譯),此可以結合第十條和第七條來達到c和cpp文件混合開發寫在頭文件當中,防止頭文件被重復包含來編譯:#ifndef +宏定義(eg:ABC)
#define +同一個宏定義(eg:ABC)
#endif +同一個宏定義(eg:ABC)
(如果你沒有定義ABC這個宏(#ifndef +宏定義),那么我就定義這個宏(define+宏定義),定義這個宏后就可以參與編譯)在頭文件被包含在源文件時,編譯時候,第一次出現的宏定義才會編譯,第二次出現相同的宏定義則不會編譯。這種可以防止頭文件被重復包含。編譯時只編譯源文件,包含的頭文件相當于直接復制粘貼在源文件中。源文件時單個編譯,鏈接時再把每個源文件編譯的obj文件中的main源文件的obj文件的不確定地址改正等等操作。.main文件的不確定地址是因為函數實現在其他地方cpp文件中,main文件使用到函數時只是包含頭文件而已,并非由函數主體,在編譯時,只有函數主體在的地方才有確定的函數地址,main文件編譯成的obj文件中函數的地址都是不確定地址,鏈接時才會去把所有obj的文件連接起來改正main文件編譯的函數不確定地址這些操作。windows下面的堆棧分配是從高地址往低地址分配的。(特記)int 9號中斷非常麻煩,一般都不是自己寫一個9號中斷,把所有鍵盤接收的東西都進行分類批發處理,也沒有這個必要,要做的也就差不多跟病毒的原理一樣但凡能以實現搞定都不要用繼承
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的2020-10-27(汇编收获)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。