結構和類的區別
1.儲存型別:結構是值型別,儲存在棧上。類是引用型別,儲存在棧上和堆上,堆上儲存真實資料,棧上儲存儲存位址,修改乙個引用的值,另乙個相同的引用的值就會發生改變。
2.繼承性:類是可以繼承的,它可以繼承其他的類或者介面,也可以被繼承,並且,類的許多特性是通過繼承來展現的,要阻止類的繼承,必須顯示的宣告sealed。結構沒有繼承:它不能繼承另乙個結構或者類,也不能被繼承。也正因為如此,結構不能有抽象成員。雖然結構沒有明確的用sealed宣告,可是結構是隱式的。結構能夠繼承介面,方法和類繼承介面是一樣的
3.初始化:類可以在宣告的時候初始化,結構不能在申明的時候初始化(不能在結構中初始化字段),否則報錯。
4.建構函式:類和結構都有自己預設的建構函式。在類中,一旦我們編寫了帶引數建構函式,預設建構函式就不存在了。當我們要呼叫不帶引數的建構函式來初始化物件時,我們必須再自己編寫乙個不帶引數的建構函式。但是在結構中,始終存在乙個不帶引數的預設建構函式,並且,這個建構函式是不可替代的,不能重寫,也不能覆蓋,在結構中,我們只能編寫帶引數的建構函式,不能編寫不帶引數的建構函式
5.析構函式:類有析構函式,但是結構沒有析構函式
6.關鍵字:在類中可以使用但是在結構中限制使用的關鍵字有:abstract、sealed、protected;static關鍵字可以用在類名前面用來宣告靜態類,但是不能用在struct前面,不存在靜態結構
類用new來例項化物件,分配記憶體,需要使用new返回位址及分配空間,而結構用new是初始化,結構是值型別,申明時就已經分配記憶體了
獲得乙個函式在記憶體塊的前面還是後面
lua垃圾**機制?
簡單講解lua中的垃圾**機制 點選開啟鏈結
lua垃圾**機制 點選開啟鏈結
二個執行緒都有自己的鎖,訪問資料交叉鎖問題?
多個執行緒訪問同乙個物件時發生鎖死的反思 點選開啟鏈結
加互斥鎖synchronized,保證執行緒的原子性(多個執行緒訪問的物件的同乙個方法) 點選開啟鏈結
如何確保n個執行緒可以訪問n個資源同時又不導致死鎖? 點選開啟鏈結
在多執行緒程式設計中lock(string)隱藏的機關 點選開啟鏈結
lock不住的bug,神一般無解的bug(xx正由另一程序使用,因此該程序無法訪問該檔案) 點選開啟鏈結
#include #include #include using namespace std;其實報錯了,輸出不了double g_test;
int temp;
bool g_brunning;
dword winapi thwriteproc1(lpvoid lparam)
return 0;
}dword winapi thwriteproc2(lpvoid lparam)
return 0;
}dword winapi threadproc(lpvoid lparam)
virtual void f()
};class b :public a
void f()
};class c :public b
void f()
};void main()
你研究過stl的原始碼嗎?
你研究過lua的原始碼嗎?
你知道lua元表怎麼實現的嗎?
你為什麼從前端轉到後端?
你封裝過的最好的乙個功能?
你自己有實現過vector的功能嗎?
JS 面試題 奇葩說
1 console.log 怎麼列印有顏色的字型 2 15 5 的結果是?15 5 的結果是?3 1 1 結果是?4 function console.log x 結果是?console.log y 結果是?5 var arr1 1,2 arr2 1,2 arr3 arr1 1 arr1 arr2 ...
那些年我們遇到的c面試題
1.這是一道關於結構體對齊補齊的題 在32為ibm pc機上使用c語言,若有如下定義 structaa 則變數a所占用的位元組數和成員布局為 c char,s short,i int,x 填充位元組 a.9,cssssiiii b.10,cxssssiiii c.12,cxssssxxiiii d....
面試題的那些事(1)
測試樣例 1,2,3,2,2 5 返回 2 解題思路 採用陣地攻守的思想 第乙個數字作為第乙個士兵,守陣地 count 1 遇到相同元素,count 遇到不相同元素,即為敵人,同歸於盡,count 當遇到count為0的情況,又以新的i值作為守陣地的士兵,繼續下去,到最後還留在陣地上的士兵,有可能是...