常問面試題 C 中sizeof的陷阱及應答

2021-07-01 23:27:30 字數 1066 閱讀 3001

c++中sizeof是經常被問到的乙個概念,比如,下面的幾個關於sizeof的面試題反覆出現在各大it公司的技術面試當中,我們有必要完全理解並掌握。

注:在曾經面試大公司時,我的確被問到過這樣的問題。

面試題:定義乙個空的資料型別,裡面沒有任何成員變數和成員函式,對該型別求sizeof,得到的結果是多少?

答案:是1,為什麼不是0?空型別的例項中不包含任何資訊,本來求sizeof應該是0,但是當我們宣告該型別的例項時,它必須在記憶體中占有一定的空間,

否則無法使用這些例項(也就不能求sizeof了),至於占用多少記憶體,由編譯器決定,visual studio中每個空型別的例項占用1位元組的空間。

擴充套件1:如果在該型別中新增乙個建構函式和析構函式,再求sizeof,得到的結果是多少?

編譯器也不會因為這兩個函式而在例項內新增任何額外的資訊。

注:不管新增的是建構函式還是析構函式還是其它任何型別的函式,都是這個結果。

擴充套件2:那如果把析構函式標記為虛函式呢?

答案:c++的編譯器一旦發現乙個型別中有虛函式

,就會為該型別生成虛函式表,並在該型別的每乙個例項中新增乙個指向虛函式表的指標,在32位機器上,乙個指標佔4位元組空間,因此求sizeof得到4;如果是64位則為8。

測試用例:

摘選自:劍指offer

HashMap常問的面試題

來看看hashmap經常被問的問題 1 hashmap特性?2 hashmap與hashtable區別?3 hashmap執行緒不安全實際會如何體現?4 hashmap如何變成執行緒安全?5 hashmap的資料結構是什麼?6.1 我們可以使用自定義的物件作為鍵嗎?7 hashmap初始化傳入的容量...

web專案常問面試題

1 語意化標籤 利於搜尋引擎收錄 也提高了 閱讀性 2 減少標籤的巢狀 利於渲染引擎的加速渲染 3 把script標籤移到html檔案末尾,因為js會阻塞後面的頁面的顯示 4 減少iframe的使用,因為iframe會增加一條http請求,阻止頁面載入,即使內容為空,載入也需要時間 6 html結構...

C 面試題之sizeof面試題

sizeof面試題1.cpp what is the output of the following code?美國某著名計算機軟硬體公司面試題 include include include using namespace std structa structb int main 解析 ss1是乙...