C 面試題(一) 基礎概念篇

2021-06-20 09:13:09 字數 1339 閱讀 2627

c++面試題——基礎概念篇

唐璐

面試c++程式設計師的時候一般都是3板斧,先是基礎問答,然後一頓虛函式、虛函式表、純虛函式、抽象類、虛函式和析構函式、虛函式和建構函式。接著拷貝建構函式、操作符過載、下面是stl,最後是智慧型指標。

都能挺過去那基本知識這關應該算是過了,下面就是專案背景和演算法了。

1,c++和c相比最大的特點

1)物件導向:封裝,繼承,多型。

2)引入引用代替指標。

3)const /inline/template替代巨集常量。

4)namespace解決重名的問題。

5)stl提供高效的資料結構和演算法

2,你知道虛函式嗎

答案:實現多型所必須,父類型別的指標指向子類的例項,執行的時候會執行之類中定義的函式。

3,析構函式可以是虛函式嗎?

答案: 如果有子類的話,析構函式必須是虛函式。否則析構子類型別的指標時,析構函式有可能不會被呼叫到。

4,多型的實現。

答案:簡而言之編譯器根據虛函式表找到恰當的虛函式。對於乙個父類的物件指標型別變數,如果給他賦父類物件的指標,那麼他就呼叫父類中的函式,如果給他賦子類物件的指標,他就呼叫子類中的函式。函式執行之前查表。

5,虛函式表是針對類還是針對物件的?

答案:虛函式表是針對類的,乙個類的所有物件的虛函式表都一樣。

6,純虛函式和虛函式有什麼區別

答案:純虛函式就是定義了乙個虛函式但並沒有實現,原型後面加"=0"。包含純虛函式的類都是抽象類,不能生成例項。

7,建構函式可以是虛函式嗎?

答案:每個物件的虛函式表指標是在建構函式中初始化的,因為建構函式沒執行完,所以虛函式表指標還沒初始化好,建構函式的虛函式不起作用。

8,建構函式中可以呼叫虛函式嗎?

答案:就算呼叫虛函式也不起作用,呼叫虛函式同呼叫一般的成員函式一樣。

9,析構函式中可以呼叫虛函式嗎?

答案:析構函式中呼叫虛函式也不起作用,呼叫虛函式同呼叫一般的成員函式一樣。析構函式的順序是先派生類後基類,有可能內容已經被析構沒了,所以虛函式不起作用。

10,虛繼承和虛基類

答案:虛繼承是為了解決多重繼承出現菱形繼承時出現的問題。例如:類b、c分別繼承了類a。類d多重繼承類b和c的時候,類a中的資料就會在類d中存在多份。通過宣告繼承關係的時候加上virtual關鍵字可以實現虛繼承。

C 面試題(一) 基礎概念篇

c 面試題 基礎概念篇 面試c 程式設計師的時候一般都是3板斧,先是基礎問答,然後一頓虛函式 虛函式表 純虛函式 抽象類 虛函式和析構函式 虛函式和建構函式。接著拷貝建構函式 操作符過載 下面是stl,最後是智慧型指標。都能挺過去那基本知識這關應該算是過了,下面就是專案背景和演算法了。1,c 和c相...

C 面試題(一) 基礎概念篇

c 面試題 基礎概念篇 唐璐面試c 程式設計師的時候一般都是3板斧,先是基礎問答,然後一頓虛函式 虛函式表 純虛函式 抽象類 虛函式和析構函式 虛函式和建構函式。接著拷貝建構函式 操作符過載 下面是stl,最後是智慧型指標。都能挺過去那基本知識這關應該算是過了,下面就是專案背景和演算法了。1,c 和...

面試題 C 基礎篇(補充)

1 定義乙個常量,可以很方便地進行引數的調整和修改。const物件一旦建立後其值不能被修改,所以const物件必須初始化。2 const 變數相對於巨集定義更安全。編譯器可以對const變數進行型別安全檢查,而對巨集定義只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤。3 ...