C/C++基礎知識總結

人生短暫,做點記錄吧!

1、一個空類佔內存1個字節。這是爲了保證n個連續空類聲明時,變量地址有偏移,防止變量覆蓋。 

2、一個類成員 ,當有虛函數時,就存在一個虛函數表的 "指針"(無虛不存在)。

3、C和C++都支持結構體,C++的結構體,可以認爲是類的一種變體,二者的差異性。類中成員,如果不聲明,默認是private,結構體中成員,如果不聲明,則默認是public。 

4、在C++裏面,結構體與類都可以內置成員函數,而C的結構體,內部只允許存在成員變量,如果需要內置成員函數,需要程序員顯式聲明函數指針變量。

5、一個類,所有的非虛函數,會被編譯器排成一個符號表,放置在特定的編譯器基礎變量區,也就是放在exe文件裏面的,在調用一個程序時,直接從文件中讀出。 

6、虛函數和普通成員函數不同,每個對象都有可能變化,因此這個函數的指針必須跟着對象走,而不是類。

7、類的每個虛函數由每個函數指針棧維護,棧底元素指向基類虛函數,棧頂元素指向派生類虛函數,一個類,被繼承幾次,最後繼承類的對象中的棧就有幾層,類中所有虛函數的棧指針由虛指針維護。

8、C++靜態成員變量屬於整個類擁有,可以被普通函數修改,需在類外初始化。

9、C++靜態成員函數只能修改靜態成員變量,不能修改普通成員變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章