q1: heap與stack的差別
a:heap是堆,stack是棧。
stack的空間由作業系統自動分配/釋放,heap上的空間手動分配/釋放。
stack空間有限,heap是很大的自由儲存區
c中的malloc函式分配的記憶體空間即在堆上,c++中對應的是new操作符。
程式在編譯期對變數和函式分配記憶體都在棧上進行,且程式執行過程中函式呼叫時引數的傳遞也在棧上進行
q2: 過載(overload)、重寫(override,有的書也叫做「覆蓋」)、重定義(redefinition)的區別?
q3: 多型的作用?
a:主要是兩個:
隱藏實現細節,使得**能夠模組化;擴充套件**模組,實現**重用;
介面重用:為了類在繼承和派生的時候,保證使用家族中任一類的例項的某一屬性時的正確呼叫。
q4: 當乙個類a 中沒有宣告任何成員變數與成員函式,這時sizeof(a)的值是多少?
a:空類在例項化時編譯器會隱式增加乙個位元組以分配記憶體
05: 談談你是怎麼認識c++中的模板的?
a:模板使程式設計師能夠快速建立具有型別安全的類庫集合和函式集合,它的實現,方便了大規模的軟體開發。(結合stl更好)
q6:請你談談你在類中如何使用const的。
a:有時我們希望某些常量只在類中有效。由於#define 定義的巨集常量是全域性的,不能達到目的,於是想當然地覺得應該用 const 修飾資料成員來實現。const 資料成員的確是存在的,但其含義卻不是我們所期望的。const 資料成員只在某個物件生存期內是常量,而對於整個類而言卻是可變的,因為類可以建立多個物件,不同的物件其 const 資料成員的值可以不同。 不能在類宣告中初始化 const 資料成員。
const 資料成員的初始化只能在類建構函式的初始化表中進行。
q7: 如何列印出當前原始檔的檔名以及原始檔的當前行號?
a:cout <<file;
cout<<line;
__file__和__line__是系統預定義巨集,這種巨集並不是在某個檔案中定義的,而是由編譯器定義的。(c也有)
經典C 語言筆試題目 1
q1 c和c 中struct有什麼區別?q2 c 中的struct和class有什麼區別?a 從語法上講,class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預...
C語言經典筆試題(二)
21 關鍵字volatile有什麼含意?並給出三個不同的例 子。參 乙個定義為volatile的變數是說這變數可 能會被意想不到地改變,這樣,編譯器就不會去假設 這個變數的值了。精確地說就是,優化器在用到這個 變數時必須每次都小心地重新讀取這個變數的值,而 不是使用儲存在暫存器裡的備份。下面是vol...
Java 經典筆試題目整理 一
public static void main string args public static intcalculate finally return i i 2 result 3 public static void main string args public static intcalc...