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