(1)const知道嗎?解釋一下其作用
const修飾類的成員變數,表示常量不可能被修改
const修飾類的成員函式,表示該函式不會修改類中的資料成員,不會呼叫其他非const的成員函式
const函式只能呼叫const函式,非const函式可以呼叫const函式
(2)虛函式是怎麼實現的
每乙個含有虛函式的類都至少有有乙個與之對應的虛函式表,其中存放著該類所有虛函式對應的函式指標(位址),
類的示例物件不包含虛函式表,只有虛指標;派生類會生成乙個相容基類的虛函式表。
(3)堆和棧的區別
1)棧 stack 存放函式的引數值、區域性變數,由編譯器自動分配釋放
堆heap,是由new分配的記憶體塊,由應用程式控制,需要程式設計師手動利用delete釋放,如果沒有,程式結束後,作業系統自動**
2)因為堆的分配需要使用頻繁的new/delete,造成記憶體空間的不連續,會有大量的碎片
3)堆的生長空間向上,位址越大,棧的生長空間向下,位址越小
(4)關鍵字static的作用
1)函式體內: static 修飾的區域性變數作用範圍為該函式體,不同於auto變數,其記憶體只被分配一次,因此其值在下次呼叫的時候維持了上次的值
2)模組內:static修飾全域性變數或全域性函式,可以被模組內的所有函式訪問,但是不能被模組外的其他函式訪問,使用範圍限制在宣告它的模組內
C 各種面試問題彙總
害,還沒找到工作,太難了,只能繼續努力了,加油衝!1.c 拷貝建構函式為什麼只能引用傳遞,不能按值傳遞 因為按值傳遞的話,得先用拷貝建構函式給形參賦值,又按值傳遞,又呼叫拷貝建構函式,一直這樣無限遞迴,所以不能按值傳遞。2.x x 1 x 1 x 哪個效率最高 x x 1首先取右邊x的位址取值,加1...
C 和C語言面試問題(持續更新)
1.c c 記憶體有哪幾種型別?c中,記憶體分為5個區,堆,棧,程式 區,全域性 靜態儲存區和常量儲存區。此外,c 中有自由儲存區一說。全域性變數和static變數會初始化為零,而堆和棧上變數是隨機的不是確定的。2.c c 堆和棧的區別?堆存放動態分配的物件 程式執行時分配的物件,比如區域性變數,其...
C 面試問題彙總Day2
5.inline函式怎麼理解 為什麼可以加快執行 知識點 inline函式 答 在c c 中,為了解決一些頻繁呼叫的小函式大量消耗棧空間 棧記憶體 的問題,特別的引入了inline修飾符,表示為內聯函式。棧空間就是指放置程式的區域性資料 也就是函式內資料 的記憶體空間。只有當函式非常短小的時候它才能...